首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ListView在不调用notifyDataSetChanged的情况下更新

问ListView在不调用notifyDataSetChanged的情况下更新
EN

Stack Overflow用户
提问于 2014-02-22 21:13:38
回答 1查看 50关注 0票数 0

我想知道,如果我告诉我的适配器只使用5项而我不调用notifyDataSetChanged,为什么我会得到第六项的列表。

代码语言:javascript
复制
    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;
            }
        }
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-22 21:21:36

setAdapter()不同步刷新ListView,只是向主UI线程队列发布一条需要刷新布局的消息。当ListView执行其布局/抽签传递时,它的适配器实际上在将控制返回到处理消息队列的主线程活套之前,在主UI线程中添加了6个项。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21960655

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档