fragment嵌套recyclerview,recyclerview的item重复加载的问题怎么解决?
做的是个仿微信的
主页面4个fragment。
1和2里面嵌套的recyclerview。
3和4里面是普通的界面
每次只要点3或4之后 在点回 1 或2 recyclerview里面的item就重复加载出来
请问有没有办法解决
代码如下
主页面
public class My_Main_Activity extends FragmentActivity implements View.OnClickListener {
LinearLayout shouye_layout,changjing_layout,anfang_layout,gengduo_layout;
ViewPager viewPager;
ImageButton yuyin_ivbt;
TextView shouye_tv,changjing_tv,anfang_tv,gengduo_tv;
//存放fragment集合
List<Fragment> list;
//4个Fragment
HomePageFragment shouye;
SceneFragment changjing;
SecurityFragment anfang;
MoreFragment gengduo;
int white,gray;
//适配器
MyAdapter myAdapter;
FragmentManager fragmentManager;
//资源类res
Resources resources;
// viewpage监听类
MyPageChangeListener myPageChangeListener;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.my_main_activity);
//通过getSupportFragmentManager()获取fragmentManager实例
fragmentManager= getSupportFragmentManager();
resources=getResources();
white=resources.getColor(R.color.colorbaizi);
gray=resources.getColor(R.color.colorhuizi);
initK();
initPager();
firstinto();
}
/**
* 初始化控件
* */
public void initK(){
myPageChangeListener=new MyPageChangeListener();
viewPager= (ViewPager) findViewById(R.id.view_pager);
viewPager.setOnPageChangeListener(myPageChangeListener);
shouye_layout= (LinearLayout) findViewById(R.id.shouye_layout);
changjing_layout= (LinearLayout) findViewById(R.id.changjing_layout);
anfang_layout= (LinearLayout) findViewById(R.id.anfang_layout);
gengduo_layout= (LinearLayout) findViewById(R.id.gengduo_layout);
yuyin_ivbt= (ImageButton) findViewById(R.id.yuyin_ivbt);
shouye_tv= (TextView) findViewById(R.id.shouye_tv);
changjing_tv= (TextView) findViewById(R.id.changjing_tv);
anfang_tv= (TextView) findViewById(R.id.anfang_tv);
gengduo_tv= (TextView) findViewById(R.id.gengduo_tv);
shouye_layout.setOnClickListener(this);
changjing_layout.setOnClickListener(this);
anfang_layout.setOnClickListener(this);
gengduo_layout.setOnClickListener(this);
View v =findViewById(R.id.yuyin_ivbt);//找到你要设透明背景的layout 的id
v.getBackground().setAlpha(0);//0~255透明度值
yuyin_ivbt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(view.getContext(),"语音按钮",Toast.LENGTH_LONG).show();
}
});
}
//初始化页面
private void initPager(){
list=new ArrayList<Fragment>();
shouye=new HomePageFragment();
changjing=new SceneFragment();
anfang=new SecurityFragment();
gengduo=new MoreFragment();
list.add(shouye);
list.add(changjing);
list.add(anfang);
list.add(gengduo);
myAdapter=new MyAdapter(fragmentManager,list);
viewPager.setAdapter(myAdapter);
}
//第一次进入页面的默认页面
private void firstinto(){
clearTuBiao();
shouye_tv.setTextColor(white);
}
@Override
public void onClick(View view) {
ChangeZiTi(view.getId());
}
//继承了ViewPage滑动监听事件
private class MyPageChangeListener implements ViewPager.OnPageChangeListener{
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
//通过onPageSelected回调方法传过来的参数可以得当前页面的位置编码
@Override
public void onPageSelected(int position) {
//调用下面的改变图标方法改变图标
ChangeZiTi(position);
}
@Override
public void onPageScrollStateChanged(int state) {
}
}
//改变图标的方法
private void ChangeZiTi(int i){
//清空选中项
clearTuBiao();
switch (i){
case R.id.shouye_layout : case 0:
//通过 viewPager.setCurrentItem();可以命令viewPager滑动到指定页面
//参数为int类型
viewPager.setCurrentItem(0);
shouye_tv.setTextColor(white);
break;
case R.id.changjing_layout:case 1:
viewPager.setCurrentItem(1);
changjing_tv.setTextColor(white);
break;
case R.id.anfang_layout:case 2:
viewPager.setCurrentItem(2);
anfang_tv.setTextColor(white);
break;
case R.id.gengduo_layout:case 3:
viewPager.setCurrentItem(3);
gengduo_tv.setTextColor(white);
break;
}
}
//清空字体的方法
private void clearTuBiao(){
shouye_tv.setTextColor(gray);
changjing_tv.setTextColor(gray);
anfang_tv.setTextColor(gray);
gengduo_tv.setTextColor(gray);
}
}