我有一个适配器,该适配器使用来自TreeMap的数据填充2个TextVIEws的ListVIEw.
当用户在ListVIEw中添加或删除Data时,应刷新VIEw.
所以这是我的适配器:
public class MyAdapter extends BaseAdapter { private final ArrayList mData; public MyAdapter(Map<String, String> map) { mData = new ArrayList(); mData.addAll(map.entrySet()); } @OverrIDe public int getCount() { return mData.size(); } @OverrIDe public Map.Entry<String, String> getItem(int position) { return (Map.Entry) mData.get(position); } @OverrIDe public long getItemID(int position) { // Todo implement you own logic with ID return 0; } @OverrIDe public VIEw getVIEw(int position, VIEw convertVIEw, VIEwGroup parent) { final VIEw result; if (convertVIEw == null) { result = LayoutInflater.from(parent.getContext()).inflate(R.layout.my_adapter_item, parent, false); } else { result = convertVIEw; } Map.Entry<String, String> item = getItem(position); // Todo replace findVIEwByID by VIEwHolder ((TextVIEw) result.findVIEwByID(androID.R.ID.text1)).setText(item.getKey()); ((TextVIEw) result.findVIEwByID(androID.R.ID.text2)).setText(item.getValue()); return result;}}
因为我想通过对话框更新视图,并且在阅读了另一个问题后,需要从UIThread调用notifyDataSetChanged(),所以我将notifyDataSetChanged()放入了Runnable中.就这个:
Runnable run = new Runnable(){ public voID run(){ Log.v("in the Runnable: ", String.valueOf(colorHashMap)); adapter.notifyDataSetChanged(); } };
这就是如何在对话框中调用Runnable的方法:
DefaultcolorActivity.this.runOnUiThread(run);
但是,无论我尝试做什么,列表都不会更新.我需要关闭并重新打开活动以获取新列表.
解决方法:
在您的适配器中创建一个方法,例如:
public voID updateList(){ notifyDataSetChanged() }
并在要@R_870_6419@时调用此方法
总结以上是内存溢出为你收集整理的Android notifyDataSetChanged无法正常工作全部内容,希望文章能够帮你解决Android notifyDataSetChanged无法正常工作所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)