博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ListView内容动态刷新
阅读量:6716 次
发布时间:2019-06-25

本文共 1755 字,大约阅读时间需要 5 分钟。

在网上看到很多,大多介绍都是利用Adapter的notifyDataSetChanged,通知Adapter数据已经更改,然后Adapter会调用getView()方法,重新显示界面。

但是除了这个之外,还有一个必须关注的就是,在调用Adapter的notifyDataSetChanged函数之前,需要手动修改Adapter具体数据成员,比如Cursor或List或Array,即变化了的部分都需要手动重赋值一遍,这样相应的Adapter的成员也必须是public的。 注:这里仅指ListView的Adapter是自定义的情况。

如:

1. Cursor 结合SQlite3数据库的情况:

// AgendaListAdapter.java

public class AgendaListAdapter extends BaseAdapter {

private static final String TAG = "AgendaListAdapter ======>";
public Context mContext;
public Cursor mCursor;
public AgendaListAdapter(Context context, Cursor cursor) {
mContext = context;
mCursor = cursor;
}

......

// DisplayAgendaListActivity.java
Cursor mCursor = mDatabaseAdapter.find(DatabaseAdapter.DATE, dateValue);
mListView = new ListView(this);
mAgendaListAdapter = new AgendaListAdapter(this, mCursor);
mListView.setAdapter(mAgendaListAdapter);
......
//数据库变化后,重查数据库,获得变化后mCursor, refresh
/** 更新mAgendaListAdapter的mCursor,以刷新mListView. */
Cursor mCursor = mDatabaseAdapter.find(DatabaseAdapter.DATE, dateValue);
mAgendaListAdapter.mCursor = mCursor;
mAgendaListAdapter.notifyDataSetChanged()

2. 其它:

public class HistoryListViewAdapter extends BaseAdapter {

 
    public List<QueryRecord> mItemList; 
//修饰符不能是private
    private LayoutInflater mInflater;
    private Context mContext;
 
    public HistoryListViewAdapter(Context c,List<QueryRecord> itemList) {
        mItemList = itemList;
        mContext = c;
        mInflater = (LayoutInflater) mContext
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }
 
    @Override
    public int getCount() {
        
//
    }
......
// 再在数据重新获取后,重新设置数据
listitemAdapter.mItemList = list; 
listitemAdapter.notifyDataSetChanged();

其它的,基本上同理,另外,如果存在多个Activity的切换,可以把刷新代码放在Activity的onStart()里面,这样每次当listview切换到最前时,呈现的都是最新的~!

转载于:https://www.cnblogs.com/sesexxoo/archive/2012/01/16/6190019.html

你可能感兴趣的文章
PAT 1066. Root of AVL Tree (25)
查看>>
hdu1052
查看>>
服务器端推送技术
查看>>
python开发工具
查看>>
Home Assistant系列 -- 自动语音播报天气
查看>>
Hyberledger-Fabric 1.00 RPC学习(1)
查看>>
SDNU 1450.报时助手
查看>>
BZOJ 4144 Dijkstra+Kruskal+倍增LCA
查看>>
阻塞与非阻塞,同步与异步
查看>>
HTML段落自动换行的样式设置
查看>>
Android实现左右滑动指引效果
查看>>
html里frame导航框架实现方法
查看>>
shell编程系列5--数学运算
查看>>
在 UWP 应用中创建、使用、调试 App Service (应用服务)
查看>>
Active MQ C#实现
查看>>
C#实现秒表程序
查看>>
cJSON 使用笔记
查看>>
CF1163E Magical Permutation
查看>>
BroadcastReceiver
查看>>
redis备份实操
查看>>