ListView内更新控件的问题

马克不想说话 发布于 2012/11/28 22:33
阅读 568
收藏 0
我的listview中每行有一个ImageView和两个TextView,当在setOnItemClickListener中出现了问题是,点击一个item会使得其他位置的item中的ImageView改变,而不是改变这个Item的ImageView,后来发现规律是点一下,与之空间对应的(比如一个最上一个最后)item中ImageView改变,再点一下,该item的ImageView改变,如此反复。
现贴上部分代码,希望高手帮我解答困惑。
final SimpleAdapter sim=new SimpleAdapter(this ,list, R.layout.chooselist,
    new String[]{"name","cid"},new int[]{R.id.choose_name,R.id.choose_hidden});
  listView.setAdapter(sim);
  listView.setOnItemClickListener(new OnItemClickListener(){
   @Override
   public void onItemClick(AdapterView<?> parent, View view,
     int position, long id) {
    tv1=(TextView)view.findViewById(R.id.choose_name);
    tv2=(TextView)view.findViewById(R.id.choose_hidden);
       radio=(ImageView)view.findViewById(R.id.choose_radio);
       String str1=tv1.getText().toString();
       String str2=tv2.getText().toString();
       System.out.println(str1+"---"+str2);
      
    if(!radio.getKeepScreenOn()){
     radio.setBackgroundResource(R.drawable.v5_0_1_checkbox_checked_unfocus);
     radio.setKeepScreenOn(true);
     /*cmap=new HashMap<String,Object>();
     cmap.put("customerid", str2);
     cmap.put("name",str1);
     clist.add(position,cmap);*/
    }else{
     radio.setBackgroundResource(R.drawable.v5_0_1_checkbox_checked_gray);
     radio.setKeepScreenOn(false);
     /*clist.remove(position);*/
    }
    sim.notifyDataSetChanged();
   }
   
  });


加载中
0
老牟
老牟

1) 判断System.out.println(str1+"---"+str2);  log是否是正确打印

2) 判断view是否每次点击都不一样,可通过打印log判断

3) 判断radio 是都每次获取的都一样

0
w
w_xiaolong
我的意见是,不要用imageview来实现checkbox,直接用checkbox就行,在drawable中用selector,来自定义checkbox的按钮。另外,自定义adapter感觉用起来比系统提供的simpleadapter好用多了
返回顶部
顶部