Android Listview问题(Notifydatasetchanged())

时间:2016-03-25 07:33:44

标签: android listview

也许它并不难,但我无法解决我的列表问题。我从列表中填写了Listview。

     @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // TODO Auto-generated method stub

    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == 2) {

        String kpn = data.getStringExtra("kupeno");
        txtddtyKupeNo.setText(kpn);


    }
    if (resultCode == 3) {
        ArrayList<BuzagiKayitDBean> arraylist = data.getParcelableArrayListExtra("mylist");

        adapter = new BuzagiListAdapter(dty, BuzagiKayitActivity.this);

        for (BuzagiKayitDBean item : arraylist) {
            dty.add(item);
        }

        if (buzlist.getCount() > 0) {

            buzlist.setAdapter(adapter);
            adapter.notifyDataSetChanged();
        } else {
            buzlist.setAdapter(adapter);
        }

    }
}

并且listview没有任何变化?我做错了什么? tyvm。

编辑(改变了这样但仍然没有刷新。我有2个项目在列表但只显示1) 编辑2(升级代码,但仍然没有工作)

2 个答案:

答案 0 :(得分:1)

首先,尽快初始化adapter,添加致电setAdapter(); 然后,当您准备好数据时,为您的适配器添加一个方法,就像appendList(List<T> list)一样,将数据附加到适配器!

public void appendList(DailyStories dailyStories) {
    //todo addList()
    notifydatasetChanged();
}

我建议您使用RecycleView替换ListView,它更强大!!

答案 1 :(得分:0)

您必须更改逻辑,因为如果您每次输入此代码的平静buzlist.getCount() > 0,则adapter将离开null您没有初始化或设置适配器。或者无论哪种方式,您必须设置适配器,当您的列表&gt; 0 时。