标题有点绕,下图是我的应用的层次结构
下面是应用截图
需要完成的功能是当点击左边导航栏时,要实时更新viewPager下的当前的listView。
我的步骤:
1.当点击导航栏时发送广播通知viewPager,并把当前信息带过去。
String keyWord = items[position];
//向viewPager发送广播传入需要检索的关键字
Intent intent = new Intent();
intent.setAction("com.gta.f10.activitys.DrawerMainActivity");
//要发送的内容
intent.putExtra("keyWord", keyWord);
//发送 一个无序广播
DrawerMainActivity.this.sendBroadcast(intent);
2.在viewPager接收方,接收广播并开始更新当前的listView
//接收DrawerMainActivity发过来的广播
private class MyBroadcastReciver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (action.equals("com.gta.f10.activitys.DrawerMainActivity")) {
String keyWord1 = intent.getStringExtra("keyWord");
System.out.println("keyWord"+keyWord1);
keyWord[currIndex] = "上海";
System.out.println("index == "+currIndex);
TodayNews todayNews = new TodayNews();
manager = new LocalActivityManager(TodayNewsViewPager.this, true);
manager.dispatchCreate(bundle);
viewPager.removeView(mListViews.get(currIndex));
updateAdapt(todayNews, "上海", "TodayNewsB");
viewPager.getAdapter().notifyDataSetChanged();
//在结束时可取消广播
//TodayNewsViewPager.this.unregisterReceiver(this);
}
}
}
大家都知道,要使notifyDataSetChanged()生效需要在myPagerAdapter中重写
@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}
同时,如果想更新viewPager中指定的listView 需要注意两个地方:
viewPager.removeView(mListViews.get(currIndex));
mListViews.remove(currIndex);
其中 currIndex是当前viewPager的下标, mListViews是全局的存放View的list
private List<View> mListViews; // 滑动的List集合
private int currIndex = 0;// 当前页卡编号
注意了以上几点就可以实时更新当前下标的ListView了。
有更好的方法希望一起交流。