EditText / Checkbox текст / значение внутри ListView

У меня есть ListView, и внутри этого списка EditText или «CheckBox» означает чекбокс для первых 7 строк, тогда Edittext отображается для других строк. Теперь мне нужны значения этих строк, которые щелкают внутри Checkbox в первых 7 строках и текст EditText для остальных строк при нажатии кнопки. Но проблема в индексе для EditText и Checkbox, как в ListView ..

Как я могу получить значение или текст всей строки одним нажатием кнопки ...

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;
}

person user3226440    schedule 27.04.2014    source источник


Ответы (1)


Я рекомендую вам установить идентификатор для каждого EditText в коде. Типа: holder.text2.setId(position); Вы должны положить это в свой else, то есть после этого: /************ Set Model values in Holder elements ***********/

Таким образом, вы всегда сможете получить текст из всего вашего EditText следующим образом:

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