0

J'ai un ListView et à l'intérieur de cette liste, EditText ou «CheckBox» signifie chekbox pour les 7 premières lignes, puis Edittext est visible pour les autres lignes. Maintenant, je veux les valeurs de ces lignes qui est cliqué à l'intérieur Checkbox dans les 7 premières lignes et le texte 'EditText' pour le reste des lignes lorsque le bouton est cliqué. Mais le problème est l'indice pour la EditText et Checkbox comme dans ListView ..EditText/Checkbox texte/valeur dans le ListView

Comment puis-je obtenir la valeur ou le texte de toute la ligne de clic un seul bouton ...

public View getView(int position, View convertView, ViewGroup parent) { 
    View vi=convertView; 
    ViewHolder holder; 

    if(convertView==null){ 

     //Inflate tabitem.xml file for each row (Defined below) 
     vi = inflater.inflate(R.layout.tabitem, null); 

     // View Holder Object to contain tabitem.xml file elements 
     holder=new ViewHolder(); 
     holder.text=(TextView)vi.findViewById(R.id.textView1); 

     holder.check =(CheckBox)vi.findViewById(R.id.checkBox1); 
     holder.text2=(EditText)vi.findViewById(R.id.editText1); 
     holder.text2.setTag(1); 
     int position12 = (Integer)holder.text2.getTag(); 
     System.out.print(position12 + "value"); 

     // Set holder with LayoutInflater 
     vi.setTag(holder);    

     j++; 

     if(j<8){ 
      holder.text2.setVisibility(View.INVISIBLE); 
      holder.check.setX(-150); 
     } 
     else{ 
      holder.check.setVisibility(View.INVISIBLE); 
     } 
    } 
    else { 
     holder=(ViewHolder)vi.getTag(); 
    } 

    holder.text2.getText(); 
    if(data.size()<=0) { 
     holder.text.setText("No Data"); 
     holder.text2.getText(); 
     // Log.v("BBBB", holder.text2.getText().toString()); 
    } 
    else { 
     // Get each Model object from Arraylist 
     tempValues=null; 
     tempValues = (ListModel) data.get(position); 

     // Set Model values in Holder elements 
     holder.text.setText(tempValues.getCompanyName()); 
     holder.text2.getText(); 

     // Set Item Click Listner for LayoutInflater for each row 
     vi.setOnClickListener(new OnItemClickListener(position)); 
    } 

    Log.v("DDD", holder.text2.getText().toString()); 
    return vi; 
} 

Répondre

0

Je vous recommande définir l'id à chaque EditText dans le code. Comme: holder.text2.setId(position); Vous devriez le mettre dans votre else, je veux dire après: /************ Set Model values in Holder elements ***********/

De cette façon, vous serez toujours en mesure d'obtenir le texte de toutes vos EditText comme ceci:

for(int i=0;i<data.size();i++){ 
EditText et=(EditText)vi.findViewById(i); 
if(et!=null) 
//Get the text from EditText 
}