滚动时自定义ListView随机更改按钮文本或编辑文本

jam*_*pez 4 android listview android-listview

我已经搜索过这个,但无济于事我没有得到问题的确切答案.

我有一个按钮ListView,当点击该按钮时,它会显示一个警告对话框来选择日期,选择日期后,所选日期将是该按钮的文本.代码工作正常,但当我向下滚动时,日期将随机更改这里是我getView()的适配器方法的代码.这也发生EditText在我输入任何EditText工作时,但当我开始滚动时,值也会改变.

这是我的获取视图方法

public View getView(int position, View convertView, ViewGroup parent) {
    final ViewHolder viewHolder;
    if(convertView == null){
        convertView = layoutInflater.inflate(R.layout.repeat_entry_listview,null);

        viewHolder = new ViewHolder();
        viewHolder.btnDate = (Button) convertView.findViewById(R.id.rpbtnDate);
        viewHolder.txtNotes  = (EditText) convertView.findViewById(R.id.rpNotes);
        convertView.setTag(viewHolder);
    }else{
        viewHolder = (ViewHolder) convertView.getTag();
    }


    RepeatEntryList repeatEntryList = listData.get(position);
    viewHolder.btnDate.setText(repeatEntryList.getDate());
    viewHolder.btnDate.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
          //EVEN IF I REMOVE THE CODE FOR SETTING THE BUTTON TEXT TO JUST LIKE THE BELOW CODE. SCROLLING ISSUES STILL PERSIST

          viewHolder.btnDate.setText("just sample date text");

            //**NOTE UPDATED**
            //MY EDITTEXT ALSO HAVE THE SAME BEHAVIOR
        }
    });
    viewHolder.txtNotes.setHint(contx.getResources().getString(R.string.placeholder_txt));
    return convertView;
}
Run Code Online (Sandbox Code Playgroud)

注意:比方说,我有20个按键和20 EditTextListView.当我输入所有内容EditText并通过单击更改按钮的文本时,然后向下滚动向上ListView,文本或值的EditText按钮将更改或交换,有时会消失.

关于我的问题,有人可以向我解释为什么ListView这样做以及如何避免这种特定的行为.

Piy*_*iya 7

如果(convertView == null){} else {}条件,请删除代码中的更改并直接使用如下

convertView = layoutInflater.inflate(R.layout.repeat_entry_listview,null);
Button btnDate = (Button) convertView.findViewById(R.id.rpbtnDate);
TextView txtNotes  = (EditText) convertView.findViewById(R.id.rpNotes);
Run Code Online (Sandbox Code Playgroud)