以前没发现的问题,使用ListView存放数据显示时,一般情况下使用时没问题,但是如果需要在ListView中的子控件改变状态时就出现问题了
看图, 选中了第1,2个,然后向下滚动,出现了没有选中的Item也被选中了,这样问题就出现了,每次改变状态时,在未知的地方也随机变化了?
MainActivity
1 package com.example.listviewscrollstatus; 2 3 import java.util.ArrayList; 4 import java.util.HashMap; 5 import java.util.List; 6 import java.util.Map; 7 8 import android.app.Activity; 9 import android.os.Bundle; 10 import android.widget.ListView; 11 12 public class MainActivity extends Activity { 13 14 ListView listView; 15 16 // 模拟数据源 17 int[] iconRes = { R.drawable.ic_launcher, R.drawable.ic_add, R.drawable.ic_add_selected }; 18 19 // 存放数据 20 private List<Map<String, Object>> dataList; 21 22 @Override 23 protected void onCreate(Bundle savedInstanceState) { 24 super.onCreate(savedInstanceState); 25 setContentView(R.layout.activity_main); 26 27 initListView(); 28 } 29 30 private void initListView() { 31 listView = (ListView) findViewById(android.R.id.list); 32 getData(); 33 34 listView.setAdapter(new ListContentAdapter(this, dataList)); 35 } 36 37 private void getData() { 38 39 dataList = new ArrayList<Map<String, Object>>(); 40 Map<String, Object> map; 41 // 模拟数据,放入对应的logo icon,title,set icon 42 for (int i = 0; i < 40; i++) { 43 map = new HashMap<String, Object>(); 44 map.put("icon", iconRes[i % 3]); // 轮流使用 45 map.put("title", "文字标题__" + i); 46 // map.put("set", ""); 47 48 dataList.add(map); 49 map = null; 50 } 51 } 52 53 }