我必须从数据库中获取数据并将其填充到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();
}
});
}
我搜索了许多链接,在我的代码中应用了他们的答案,但没有任何改变。
答案 0 :(得分:1)
您正在使用allTags
创建适配器,因此,无论何时通过添加或删除更多元素更改allTags
的值,然后立即调用notifyDataSetChange()
,它都会反映出适配器。我在您的代码中可以看到,OnItemClickListener
内部您没有修改allTags
,因此调用notifyDataSetChanged
无效。