大概结构如下,不刷新!
//fragment
class MyFragment ...{
ListView listView;
MyAdapter adapter;
...
}
//adapter
class MyAdapter ...{
static List<T> myData = new List();
Content context;
Timer timer =...;
TimerTask timerTask = ...{
for( T t : myData){
...
}
//notifyDataSetChanged();
//调用不刷新,换成下面的可以了。
Intent intent = new Intent("myaction.allin");
Bundle bundle = new Bundle();
//把数据保存到Bundle里
bundle.putString("name", "online_status_refresh");
//把bundle放入intent里
intent.putExtra("action",bundle);
LocalBroadcastManager.getInstance(context).sendBroadcast(intent);
}
void regBroadcast(){
LocalBroadcastManager broadcastManager = LocalBroadcastManager.getInstance( context);
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("myaction.allin");
BroadcastReceiver mItemViewListClickReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent){
notifyDataSetChanged();
}
}
应该是notifyDataSetChanged对线程有要求吧。
myData 必须是 static的。
本文探讨了在不刷新界面的情况下更新Fragment中数据的方法。通过使用Intent和LocalBroadcastManager发送广播,代替传统的notifyDataSetChanged()方法,实现了数据更新并触发界面刷新。
4796

被折叠的 条评论
为什么被折叠?



