以前没发现的问题,使用ListView存放数据显示时,一般情况下使用时没问题,但是如果需要在ListView中的子控件改变状态时就出现问题了

看图, 选中了第1,2个,然后向下滚动,出现了没有选中的Item也被选中了,这样问题就出现了,每次改变状态时,在未知的地方也随机变化了?

ListView 的Item状态改变和保存        ListView 的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 }
View Code

相关文章: