我想知道,如果我告诉我的适配器只使用5项而我不调用notifyDataSetChanged,为什么我会得到第六项的列表。
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final ListView list = (ListView) findViewById(R.id.list);
final List<Integer> data = new ArrayList<Integer>(Arrays.asList(1, 2, 3, 4, 5));
list.setAdapter(new MyAdapter(data));
data.add(6);
}
class MyAdapter extends BaseAdapter {
List<Integer> data;
public MyAdapter(List<Integer> _data) {
data = _data;
}
@Override
public int getCount() {
return data.size();
}
@Override
public Object getItem(int i) {
return data.get(i);
}
@Override
public long getItemId(int i) {
return data.get(i);
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
TextView textView = new TextView(MainActivity.this);
textView.setText(String.valueOf(data.get(i)));
return textView;
}
}
}发布于 2014-02-22 21:21:36
setAdapter()不同步刷新ListView,只是向主UI线程队列发布一条需要刷新布局的消息。当ListView执行其布局/抽签传递时,它的适配器实际上在将控制返回到处理消息队列的主线程活套之前,在主UI线程中添加了6个项。
https://stackoverflow.com/questions/21960655
复制相似问题