如何在recyclerView android中停止项目重复

编程入门 行业动态 更新时间:2024-10-10 03:23:08
本文介绍了如何在recyclerView android中停止项目重复的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

实际上,我的问题是,当我单击该项目时,它会转到DetailsFragment.但是,当我返回到ItemListFragment时,项目编号增加了,并且发生了重复.请帮助我从中恢复..预先感谢....

Actually my problem is when I click the item it go to a DetailsFragment. But when I return back to my ItemListFragment the items number is increased and duplication is occurred. Please help me to recover from it.. Thanks in advance....

public class ItemsListFragment extends Fragment { public static final String SINGLE_ITEMS = "single_items"; String[] mNames; String[] mPrices; int[] mImages; Context mContext; ArrayList<Data> mArrayList = new ArrayList<Data>(); @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_items_list, container, false); RecyclerView recyclerView = (RecyclerView) view.findViewById(R.id.items_list_recycler); String allFields = getArguments().getString(CategoryFragment.ALL_FIELD); assert allFields != null; switch (allFields) { case "women_clothing": mNames = getResources().getStringArray(R.array.women_clothing_names); mPrices = getResources().getStringArray(R.array.women_clothing_prices); mImages = DataValues.women_clothing_images; break; case "women_shoes": mNames = getResources().getStringArray(R.array.women_shoes_names); mPrices = getResources().getStringArray(R.array.women_shoes_prices); mImages = DataValues.women_shoes_images; break; case "women_bags": mNames = getResources().getStringArray(R.array.women_bags_names); mPrices = getResources().getStringArray(R.array.women_bags_prices); mImages = DataValues.women_bags_images; break; case "women_watches": mNames = getResources().getStringArray(R.array.women_watches_names); mPrices = getResources().getStringArray(R.array.women_watches_prices); mImages = DataValues.women_watches_images; break; case "women_sunglasses": mNames = getResources().getStringArray(R.array.women_sunglasses_names); mPrices = getResources().getStringArray(R.array.women_sunglasses_prices); mImages = DataValues.women_sunglasses_images; break; case "women_accessories": mNames = getResources().getStringArray(R.array.women_accessories_names); mPrices = getResources().getStringArray(R.array.women_accessories_prices); mImages = DataValues.women_accessories_images; break; } int i = 0; for (String name : mNames) { Data data = new Data(name, mPrices[i], mImages[i]); mArrayList.add(data); i++; } ItemListGridAdapter adapter = new ItemListGridAdapter(getActivity(), mArrayList, allFields); recyclerView.setAdapter(adapter); RecyclerView.LayoutManager manager = new GridLayoutManager(getActivity(), 2); recyclerView.setLayoutManager(manager); recyclerView.setHasFixedSize(true); return view; } }

ItemListGridAdapter

public class ItemListGridAdapter extends RecyclerView.Adapter<ItemListGridAdapter.ItemListViewHolder> { public static final String POSITION = "position"; private Context mContext; private ArrayList<Data> mArrayList = new ArrayList<Data>(); private String mAllFields; public ItemListGridAdapter(Context context, ArrayList<Data> arrayList, String allfields) { mContext = context; mArrayList = arrayList; mAllFields = allfields; } @Override public ItemListViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_itemlist, parent, false); ItemListViewHolder viewHolder = new ItemListViewHolder(view); return viewHolder; } @Override public void onBindViewHolder(ItemListViewHolder holder, final int position) { Data data = mArrayList.get(position); holder.mName.setText(data.getName()); holder.mPrice.setText(data.getPrice()); holder.mImage.setImageResource(data.getImageId()); final Bundle bundle = new Bundle(); holder.mRelativeLayout.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { switch (mAllFields) { case "women_clothing": DetailsFragment fragment = new DetailsFragment(); bundle.putInt(POSITION, (position + 10)); fragment.setArguments(bundle); FragmentManager fragmentManager = ((Activity) mContext).getFragmentManager(); FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); fragmentTransaction.replace(R.id.home_main_frame, fragment); fragmentTransaction.addToBackStack(null); fragmentTransactionmit(); break; case "women_shoes": DetailsFragment fragment1 = new DetailsFragment(); bundle.putInt("position", (position + 10)); fragment1.setArguments(bundle); FragmentManager fragmentManager1 = ((Activity) mContext).getFragmentManager(); FragmentTransaction fragmentTransaction1 = fragmentManager1.beginTransaction(); fragmentTransaction1.replace(R.id.home_main_frame, fragment1); fragmentTransaction1.addToBackStack(null); fragmentTransaction1mit(); break; case "women_bags": DetailsFragment fragment2 = new DetailsFragment(); bundle.putInt("position", (position + 10)); fragment2.setArguments(bundle); FragmentManager fragmentManager2 = ((Activity) mContext).getFragmentManager(); FragmentTransaction fragmentTransaction2 = fragmentManager2.beginTransaction(); fragmentTransaction2.replace(R.id.home_main_frame, fragment2); fragmentTransaction2.addToBackStack(null); fragmentTransaction2mit(); break; case "women_watches": DetailsFragment fragment3 = new DetailsFragment(); bundle.putInt("position", (position + 10)); fragment3.setArguments(bundle); FragmentManager fragmentManager3 = ((Activity) mContext).getFragmentManager(); FragmentTransaction fragmentTransaction3 = fragmentManager3.beginTransaction(); fragmentTransaction3.replace(R.id.home_main_frame, fragment3); fragmentTransaction3.addToBackStack(null); fragmentTransaction3mit(); break; case "women_sunglasses": DetailsFragment fragment4 = new DetailsFragment(); bundle.putInt("position", (position + 10)); fragment4.setArguments(bundle); FragmentManager fragmentManager4 = ((Activity) mContext).getFragmentManager(); FragmentTransaction fragmentTransaction4 = fragmentManager4.beginTransaction(); fragmentTransaction4.replace(R.id.home_main_frame, fragment4); fragmentTransaction4.addToBackStack(null); fragmentTransaction4mit(); break; case "women_accessories": DetailsFragment fragment5 = new DetailsFragment(); bundle.putInt("position", (position + 10)); fragment5.setArguments(bundle); FragmentManager fragmentManager5 = ((Activity) mContext).getFragmentManager(); FragmentTransaction fragmentTransaction5 = fragmentManager5.beginTransaction(); fragmentTransaction5.replace(R.id.home_main_frame, fragment5); fragmentTransaction5.addToBackStack(null); fragmentTransaction5mit(); break; } } }); } @Override public int getItemCount() { return mArrayList.size(); } public class ItemListViewHolder extends RecyclerView.ViewHolder { private TextView mName; private TextView mPrice; private ImageView mImage; private RelativeLayout mRelativeLayout; public ItemListViewHolder(View itemView) { super(itemView); mName = (TextView) itemView.findViewById(R.id.item_name_text); mPrice = (TextView) itemView.findViewById(R.id.item_price_text); mImage = (ImageView) itemView.findViewById(R.id.item_image); mRelativeLayout = (RelativeLayout) itemView.findViewById(R.id.item_click); } } }

DetailsFragment

public class DetailsFragment extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_details, container, false); TextView mTitle = (TextView) view.findViewById(R.id.item_details_title); TextView mPrice = (TextView) view.findViewById(R.id.item_details_price); ImageView mImage = (ImageView) view.findViewById(R.id.item_details_image); TextView mDescription = (TextView) view.findViewById(R.id.item_details_description); int position = getArguments().getInt(ItemListGridAdapter.POSITION); Toast.makeText(getActivity(), ""+position, Toast.LENGTH_SHORT).show(); return view; }

推荐答案

执行此操作

int i = 0; mArrayList.clear(); //Clear your array list before adding new data in it for (String name : mNames) { Data data = new Data(name, mPrices[i], mImages[i]); mArrayList.add(data); i++; }

这样做,您的数据将不再重复. 尝试一下,让我知道它是否对您有用.

By doing this your data won't duplicate anymore. Try it and let me know if it work for you.

更多推荐

如何在recyclerView android中停止项目重复

本文发布于:2023-11-27 11:40:11,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1637910.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:项目   如何在   recyclerView   android

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!