大佬教程收集整理的这篇文章主要介绍了android – 在片段之间切换后,RecyclerView项目消失,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
protected void onCreate(Bundle savedInstanceStatE) { super.onCreate(savedInstanceStatE); setContentView(R.layout.activity_nav); toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); viewPager = (ViewPager) findViewById(R.id.viewpager); setupViewPager(viewPager); fab = (FloaTingActionButton) findViewById(R.id.fab); // Fab for fragments viewPager.addOnPagechangelistener(new ViewPager.onPagechangelistener() { @Override public void onPageScrolled(int position,float positionOffset,int positionOffsetPixels) { } @Override public void onPageSELEcted(int position) { } @Override public void onPageScrollStateChanged(int statE) { switch (statE) { case ViewPager.SCROLL_STATE_DRAGGING: case ViewPager.SCROLL_STATE_SETTLING: fab.hide(); // Hide animation break; case ViewPager.SCROLL_STATE_IDLE: switch (viewPager.getCurrentItem()) { case 0: fragment1.shareFab(fab); case 1: fragment2.shareFab(fab); fab.setOnClickListener(new View.onClickListener() { @Override public void onClick(View v) { startActivity(new Intent(NavActivity.this,MapsActivity.class)); } }); break; default: fragment1.shareFab(null); break; } if(viewPager.getCurrentItem() == 0 || viewPager.getCurrentItem() == 1) fab.show(); // Show animation break; } } }); tabLayout = (TabLayout) findViewById(R.id.tabs); tabLayout.setOnTabSELEctedListener(new TabLayout.onTabSELEctedListener() { @Override public void onTabSELEcted(TabLayout.Tab tab) { viewPager.setCurrentItem(tab.getPosition()); } @Override public void onTabUnSELEcted(TabLayout.Tab tab) { } @Override public void onTabReSELEcted(TabLayout.Tab tab) { } }); tabLayout.setupWithViewPager(viewPager); } private void setupViewPager(ViewPager viewPager) { ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager()); adapter.addFragment(new MainFragment(),"Main"); adapter.addFragment(new AboutFragment(),"About"); adapter.addFragment(new CartFragment(),"Cart"); adapter.addFragment(new CatalogFragment(),"Catalog"); viewPager.setAdapter(adapter); } ///////////new class class ViewPagerAdapter extends FragmentPagerAdapter { private final List<Fragment> mFragmentList = new ArrayList<>(); private final List<String> mFragmenttitleList = new ArrayList<>(); public ViewPagerAdapter(FragmentManager manager) { super(manager); } @Override public Fragment getItem(int position) { return mFragmentList.get(position); } @Override public int getCount() { return mFragmentList.size(); } public void addFragment(Fragment fragment,String titlE) { mFragmentList.add(fragment); mFragmenttitleList.add(titlE); } @Override public CharSequence getPagetitle(int position) { return mFragmenttitleList.get(position); } } @Override public void onrequestPermissionsResult(int requestCode,@NonNull String[] permissions,@NonNull int[] grantResults) { super.onrequestPermissionsResult(requestCode,permissions,grantResults); List<Fragment> fragments = getSupportFragmentManager().getFragments(); if (fragments != null) { for (Fragment fragment : fragments) { fragment.onrequestPermissionsResult(requestCode,grantResults); } } }
}
我面临一个问题,在切换片段后项目消失我认为使用RecyclerView的工具和viewHolder有关.
我试图从我的服务器获取数据,进入片段C(碎片编号3),数据流一切正确显示.
如果我换成碎片B(碎片编号2)或D(碎片编号4),仍然一切正常.
但如果生病了交换到frag A(碎片号1)并返回到碎片3(我的列表项在哪里),
一切都消失了,我得到了空白的屏幕,即使我上下交换,物品也不会再次下载.
这是我的RecyclerView的Frag num 3:
private FloaTingActionButton mSharedFab; private List<MyProducts> productsList; //CreaTing Views private RecyclerView recyclerView; private RecyclerView.LayoutManager layoutManager; private RecyclerView.Adapter adapter; //Volley request Queue private requestQueue requestQueue; privatE int requestCount = 1; private static final String URL_INDEX = "http://myserverip/android/product.PHP?page="; //Tag values to read from json public static final String TAG_IMAGE_URL = "product_img"; public static final String TAG_PRODUCT_SN = "product_serial_num"; public static final String TAG_PRODUCT_titlE = "product_title"; public static final String TAG_PRODUCT_PRICE = "product_price"; public static final String TAG_PRODUCT_DESCRIPTION = "product_description"; public CartFragment() { // required empty public constructor } public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceStatE) { // Inflate the layout for this fragment View view = inflater.inflate(R.layout.fragment_cart,container,falsE); recyclerView = (RecyclerView) view.findViewById(R.id.recyclerView); layoutManager = new linearlayoutmanager(getActivity().getApplicationContext(),linearlayoutmanager.VERTICAL,falsE); recyclerView.setLayoutManager(layoutManager); recyclerView.setItemAnimator(new DefaultItemAnimator()); recyclerView.setHasFixedSize(true); //Initializing our superheroes list productsList = new ArrayList<>(); requestQueue = Volley.newrequestQueue(getActivity().getApplicationContext()); //Calling method to get data to fetch data getData(); //Adding an scroll change listener to recyclerview if (Build.VERSION.SDK_INT <= Build.VERSION_CODEs.LOLLIPOp) { recyclerView.addOnScrollListener(new RecyclerView.onScrollListener() { @Override public void onScrolled(RecyclerView recyclerView,int dx,int dy) { super.onScrolled(recyclerView,dx,dy); if (isLastItemDisplaying(recyclerView)) { getData(); } } }); } else { if (Build.VERSION.SDK_INT >= Build.VERSION_CODEs.M) { recyclerView.setOnScrollchangelistener( new RecyclerView.onScrollchangelistener() { @Override public void onScrollChange(View v,int scrollX,int scrollY,int oldScrollX,int oldScrollY) { if (isLastItemDisplaying(recyclerView)) { getData(); } } }); } } //initializing our adapter adapter = new CustomAdapter(productsList,getActivity()); //Adding adapter to recyclerview recyclerView.setAdapter(adapter); return view ; }
和customAdapter类:
public class CustomAdapter extends RecyclerView.Adapter<CustomAdapter.ViewHolder> { //Imageloader to load image private ImageLoader imageLoader; private Context context; List<MyProducts> myProducts; public CustomAdapter(List<MyProducts> myProducts,Context context) { super(); this.myProducts = myProducts; this.context = context; } @Override public CustomAdapter.ViewHolder onCreateViewHolder(ViewGroup parent,int viewTypE) { View v = LayoutInflater.from(parent.getContext()) .inflate(R.layout.product_list,parent,falsE); ViewHolder viewHolder = new ViewHolder(v); return viewHolder; } @Override public void onBindViewHolder(CustomAdapter.ViewHolder holder,int position) { if( myProducts != null) { MyProducts myProducts1 = myProducts.get(position); imageLoader = ImageVolley.geTinstance(context).getImageLoader(); imageLoader.get(myProducts1.getProductimage(),ImageLoader.getImageListener(holder.imageView,R.drawable.android_store_log,android.R.drawable.ic_dialog_alert)); //Showing data to the views holder.imageView.setImageUrl(myProducts1.getProductimage(),imageLoader); holder.textViewProducttitle.setText(myProducts1.getProducttitle()); holder.textViewProductDescription.setText(myProducts1.getProductDescription()); holder.textViewProductserialnumber.setText(myProducts1.getProductSn()); holder.textViewProductPrice.setText(myProducts1.getProductPrice()); } } @Override public int getItemCount() { return myProducts.size(); } public class ViewHolder extends RecyclerView.ViewHolder { //Views public NetworkImageView imageView; public TextView textViewProducttitle; public TextView textViewProductDescription; public TextView textViewProductserialnumber; public TextView textViewProductPrice; //Initializing Views public ViewHolder(View itemView) { super(itemView); imageView = (NetworkImageView) itemView.findViewById(R.id.imageViewHero); textViewProducttitle = (TextView) itemView.findViewById(R.id.textViewProducttitlE); textViewProductDescription = (TextView) itemView.findViewById(R.id.textViewProductDescription); textViewProductserialnumber = (TextView) itemView.findViewById(R.id.textViewProductserialnumber); textViewProductPrice = (TextView) itemView.findViewById(R.id.textViewProductPricE); } }
viewPager.setOffscreenPageLimit(3);
以上是大佬教程为你收集整理的android – 在片段之间切换后,RecyclerView项目消失全部内容,希望文章能够帮你解决android – 在片段之间切换后,RecyclerView项目消失所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。