EditText in listview repeats the value

后端 未结 3 738
死守一世寂寞
死守一世寂寞 2020-12-22 04:57

I have three textviews and one edit text in the list. when I entered any value in the edittext, the same value is also copied in the other edittext. I tired implementing wit

相关标签:
3条回答
  • 2020-12-22 05:41

    Adding to below answer , you should always use if else condition to put values in getView(..) method , if no value the put empty space in else condition , I too faced the same issue.

    0 讨论(0)
  • 2020-12-22 05:54

    This is a good tutorial that solved my problem:

    http://www.webplusandroid.com/creating-listview-with-edittext-and-textwatcher-in-android/

    The key is:

     @Override
            public View getView(int position, View convertView, ViewGroup parent) {
     
                //ViewHolder holder = null;
                final ViewHolder holder;
                if (convertView == null) {
     
                    holder = new ViewHolder();
                    LayoutInflater inflater = ListviewActivity.this.getLayoutInflater();
                    convertView = inflater.inflate(R.layout.lyt_listview_list, null);
                    holder.textView1 = (TextView) convertView.findViewById(R.id.textView1);
                    holder.editText1 = (EditText) convertView.findViewById(R.id.editText1);    
     
                    convertView.setTag(holder);
     
                } else {
     
                    holder = (ViewHolder) convertView.getTag();
                }
     
                holder.ref = position;
     
                holder.textView1.setText(arrText[position]);
                holder.editText1.setText(arrTemp[position]);
                holder.editText1.addTextChangedListener(new TextWatcher() {
     
                    @Override
                    public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
                        // TODO Auto-generated method stub
     
                    }
     
                    @Override
                    public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
                            int arg3) {
                        // TODO Auto-generated method stub
     
                    }
     
                    @Override
                    public void afterTextChanged(Editable arg0) {
                        // TODO Auto-generated method stub
                        arrTemp[holder.ref] = arg0.toString();
                    }
                });
     
                return convertView;
            }
     
            private class ViewHolder {
                TextView textView1;
                EditText editText1;
                int ref;
            }

    0 讨论(0)
  • 2020-12-22 05:57

    As we know ListView reuses the view of ListItem as we scroll the whole list.

    So problem arises when we have a custom ListView with EditText where if we enter any value in the first EditText and start scrolling then the value of EditText one is copied to another the EditTexts one by one as we scroll the listview .

    This happens as the listview reuses the view and as the other listitem from another view i.e. the view which is not seen scrolls upwards it reuses the old lists view and hence the old value of that view is seen in the new edittext.

    http://www.webplusandroid.com/creating-listview-with-edittext-and-textwatcher-in-android/

    0 讨论(0)
提交回复
热议问题