有关listview中监听button状态,滚动后顺序混乱的问题

时间:2021-07-29 04:00:23
    烦了好一阵了,我的需求是在adapter中监听listview的button状态,点击button后保存当前item中button的状态;然而滚动后顺序变得混乱!找了很多东西大家都总结是和listview 的缓存机制有关,但是没有一个给出实际解决方案的。后来觉得应该是“用一个Map键值对,将List中的各个状态保存下来,然后,滑动的时候,显示Map保存的状态”这个思路最靠谱,无奈自己太笨,不知道具体该怎么实现,进度要求的还急,希望有过类似经历的哥们帮忙看下修改下getview的代码! 有关listview中监听button状态,滚动后顺序混乱的问题


public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View view = null;
if (convertView == null) {
view = inflater.inflate(R.layout.alarm_item, null);
}else{
view = convertView;
}


final Button btn_process_state = (Button) view
.findViewById(R.id.btn_process_state);

btn_process_state.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Log.i("SECOM", "我点击了button");
btn_process_state.setBackgroundDrawable(null);
btn_process_state.setText("处理中");
btn_process_state.setTextColor(0xff0ba432);
btn_process_state.setClickable(false);

}
});

return view;
}

5 个解决方案

#1


getView()方法处理的有问题   你复用convertView的时候请注意 position 这个变量

#2


getView的问题 不断的复写问题

#3


不要使用convertView,去掉if(convertView == null){}再试试看。

#4


这个答案正确的

#5


你拿到的那个BUtton控件 把Button的Id重新设置一边 Button.setId(position) 试下这个方法吧

#1


getView()方法处理的有问题   你复用convertView的时候请注意 position 这个变量

#2


getView的问题 不断的复写问题

#3


不要使用convertView,去掉if(convertView == null){}再试试看。

#4


这个答案正确的

#5


你拿到的那个BUtton控件 把Button的Id重新设置一边 Button.setId(position) 试下这个方法吧