notifyDatasetChanged()id不起作用

时间:2014-07-31 07:13:29

标签: android database listview android-arrayadapter

我必须从数据库中获取数据并将其填充到ListView中。但每次我运行它时,它都会将数据添加到以前的数据中......

例如.. 第一轮: - 一个 乙 ç

第二轮: - 一个 乙 C 一个 乙 ç

依旧......

这是我在使用NotifyDatasetChanged()

的地方使用的代码
List<Tag> allTags = db.getAllTags();
    for (Tag tag : allTags) {


        lv1=(ListView)findViewById(R.id.lv1);


        arraylist=new ArrayAdapter<Tag>(this,
                android.R.layout.simple_list_item_1, allTags);
        lv1.setAdapter(arraylist);



        Log.d("Tag Name", tag.getTagName());


        lv1.setOnItemClickListener(new OnItemClickListener() {


            @TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
                // TODO Auto-generated method stub

                 String item = ((TextView)view).getText().toString();

                    Toast.makeText(getBaseContext(), item, Toast.LENGTH_SHORT).show();


                    arraylist.notifyDataSetChanged();



            }
        });
    }

我搜索了许多链接,在我的代码中应用了他们的答案,但没有任何改变。

1 个答案:

答案 0 :(得分:1)

您正在使用allTags创建适配器,因此,无论何时通过添加或删除更多元素更改allTags的值,然后立即调用notifyDataSetChange(),它都会反映出适配器。我在您的代码中可以看到,OnItemClickListener内部您没有修改allTags,因此调用notifyDataSetChanged无效。