Android 显示存储在共享首选项上的项目列表

Android 显示存储在共享首选项上的项目列表,android,android-fragments,android-recyclerview,sharedpreferences,Android,Android Fragments,Android Recyclerview,Sharedpreferences,我有一个回收站,里面有几样东西。当有人单击主片段中的某个项目时,它会存储在SharedReferences上,然后所有单击的项目都会显示在另一个片段上。我的问题是,当有人单击某个项目时,只有第一个单击的项目显示在另一个片段(详细信息片段)上,而不是项目列表 这些是在我的SessionManager.class上保存、检索和删除项目的方法 public void saveitems(Context context,List<SingleItem> items){ Gs

我有一个回收站,里面有几样东西。当有人单击主片段中的某个项目时,它会存储在SharedReferences上,然后所有单击的项目都会显示在另一个片段上。我的问题是,当有人单击某个项目时,只有第一个单击的项目显示在另一个片段(详细信息片段)上,而不是项目列表

这些是在我的SessionManager.class上保存、检索和删除项目的方法

public void saveitems(Context context,List<SingleItem> items){

        Gson gson = new Gson();
        String cartitems = gson.toJson(items);
        editor.putString(KEY_ITEMS,cartitems);
        editor.commit();
    }

    public void grandtotal (String total){
        editor.putString(KEY_TOTAL,total);
        editor.commit();
    }

    public void savetocart(Context context, SingleItem singleitems){
        List<SingleItem>  itemList = getItems(context);

        if (itemList == null) {

                itemList = new ArrayList<>();
                itemList.add(singleitems);
                saveitems(context, itemList);

        }

    }

    public ArrayList<SingleItem>  getItems(Context context){
        List<SingleItem> items;

        if (pref.contains(KEY_ITEMS)){
            String cartitems = pref.getString(KEY_ITEMS,null);
            Gson gson = new Gson();
            SingleItem[] singleItems = gson.fromJson(cartitems,SingleItem[].class);

            items = Arrays.asList(singleItems);
            items = new ArrayList<>(items);

        }
        else
            return null;

        return (ArrayList<SingleItem>) items;
    }

    public void removeitem(Context context, SingleItem singleItem){
        ArrayList<SingleItem> items = getItems(context);

        if (items != null){
            items.remove(singleItem);
            saveitems(context,items);
        }
    }
public void保存项(上下文、列表项){
Gson Gson=新的Gson();
字符串cartitems=gson.toJson(items);
编辑器.putString(KEY_项、cartitems);
commit();
}
公共总计(字符串总计){
编辑器.putString(键_总计,总计);
commit();
}
public void savetocart(上下文上下文,SingleItem singleitems){
List itemList=getItems(上下文);
if(itemList==null){
itemList=新的ArrayList();
itemList.add(singleitems);
保存项目(上下文、项目列表);
}
}
公共ArrayList getItems(上下文){
清单项目;
if(优先包含(关键项目)){
String cartitems=pref.getString(KEY_ITEMS,null);
Gson Gson=新的Gson();
SingleItem[]singleItems=gson.fromJson(cartitems,SingleItem[].class);
items=Arrays.asList(singleItems);
项目=新的阵列列表(项目);
}
其他的
返回null;
返回(ArrayList)项目;
}
public void removietem(上下文上下文,SingleItem SingleItem){
ArrayList items=getItems(上下文);
如果(项!=null){
项目。删除(单个项目);
保存项目(上下文、项目);
}
}
这就是我存储已单击项目的方式。看一看(回收项目):

package com.carlton.shop;
导入android.app.ProgressDialog;
导入android.os.Bundle;
导入android.support.v4.app.Fragment;
导入android.support.v7.app.AlertDialog;
导入android.support.v7.widget.LinearLayoutManager;
导入android.support.v7.widget.RecyclerView;
导入android.util.Log;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.AdapterView;
导入android.widget.Button;
导入android.widget.LinearLayout;
导入android.widget.TextView;
导入android.widget.Toast;
导入java.util.ArrayList;
导入java.util.HashMap;
导入java.util.List;
导入es.dmoral.toasty.toasty;
2.电话;;
2.回拨;
2.回应;;
进口改装2.改装;
进口改装2.converter.gson.GsonConverterFactory;
导入ss.com.bannerslider.banners.RemoteBanner;
导入ss.com.bannerslider.views.bannerslider;
/**
*一个简单的{@link Fragment}子类。
*/
公共类MainFragment扩展了片段{
私人横幅滑梯横幅滑梯;
私人废物分类;
公共回收站查看回收站;
专用适配器;
私人清单项目;
会话管理器会话管理器;
私人清单项目;
专用单项目适配器;
专线布局布局类别、布局项目;
私有文本视图CatName;
私人按钮;
公共MainFragment(){
//必需的空公共构造函数
}
@凌驾
创建视图(最终布局)上的公共视图充气机、视图组容器、,
Bundle savedInstanceState){
//为该碎片膨胀布局
视图=充气机。充气(R.layout.fragment_main,容器,假);
bannerSlider=(bannerSlider)view.findViewById(R.id.banner\u滑块1);
Categories=(RecyclerView)view.findViewById(R.id.recyclercategories);
Layoutcategories=(LinearLayout)view.findViewById(R.id.Layoutcategories);
Layoutitems=(LinearLayout)view.findviewbyd(R.id.Layoutitems);
RecyclerItems=(RecyclerView)view.findViewById(R.id.RecyclerItems);
CatName=(TextView)view.findViewById(R.id.tvcategoryname);
Up=(按钮)view.findViewById(R.id.btnup);
sessionManager=newsessionmanager(getContext());
类别。setHasFixedSize(真);
RecyclerView.LayoutManager LayoutManager=新的LinearLayoutManager(getContext());
类别。setLayoutManager(layoutManager);
RecyclerItems.setHasFixedSize(真);
RecyclerView.LayoutManager LayoutManager=新的LinearLayoutManager(getContext());
RecyclerItems.setLayoutManager(layoutmanager);
Categories.addOnItemTouchListener(新的RecyclerItemClickListener(getContext(),新的AdapterView.OnItemClickListener()){
@凌驾
public void onItemClick(AdapterView父对象、视图、最终整型位置、长id){
Layoutcategories.setVisibility(View.GONE);
Layoutitems.setVisibility(View.VISIBLE);
createcategorysession(item.get(position.getCategory());
HashMap cat=sessionManager.getcategoryitems();
CatName.setText(cat.get(SessionManager.KEY_CATEGORY));
setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
Layoutitems.setVisibility(View.GONE);
Layoutcategories.setVisibility(View.VISIBLE);
}
});
items=newarraylist(item.get(position.getItems());
adapters=新的SingleItemAdapter(getContext(),items);
RecyclerItems.setAdapter(适配器);
RecyclerItems.addOnItemTouchListener(新的RecyclerItemClickListener(getContext(),新的AdapterView.OnItemClickListener()){
@凌驾
public void onItemClick(AdapterView父对象,V
package com.carlton.shop;


import android.app.ProgressDialog;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v7.app.AlertDialog;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;


import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import es.dmoral.toasty.Toasty;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;
import ss.com.bannerslider.banners.RemoteBanner;
import ss.com.bannerslider.views.BannerSlider;



/**
 * A simple {@link Fragment} subclass.
 */
public class MainFragment extends Fragment {
    private BannerSlider bannerSlider;
    private RecyclerView Categories;
    public RecyclerView RecyclerItems;
    private ShopItemAdapter adapter;
    private List<ShopItem> item;
    SessionManager sessionManager;
    private List<SingleItem> items;
    private SingleItemAdapter adapters;
    private LinearLayout Layoutcategories, Layoutitems;
    private TextView CatName;
    private Button Up;


    public MainFragment() {
        // Required empty public constructor
    }


    @Override
    public View onCreateView(final LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View view = inflater.inflate(R.layout.fragment_main, container, false);

        bannerSlider = (BannerSlider) view.findViewById(R.id.banner_slider1);
        Categories = (RecyclerView) view.findViewById(R.id.recyclercategories);
        Layoutcategories = (LinearLayout) view.findViewById(R.id.LayoutCategories);
        Layoutitems = (LinearLayout) view.findViewById(R.id.LayoutItems);
        RecyclerItems = (RecyclerView) view.findViewById(R.id.recycleritems);
        CatName = (TextView) view.findViewById(R.id.tvcategoryname);
        Up = (Button) view.findViewById(R.id.btnup);

        sessionManager = new SessionManager(getContext());

        Categories.setHasFixedSize(true);
        RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(getContext());
        Categories.setLayoutManager(layoutManager);

        RecyclerItems.setHasFixedSize(true);
        RecyclerView.LayoutManager layoutmanager = new LinearLayoutManager(getContext());
        RecyclerItems.setLayoutManager(layoutmanager);

        Categories.addOnItemTouchListener(new RecyclerItemClickListener(getContext(), new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, final int position, long id) {

                Layoutcategories.setVisibility(View.GONE);
                Layoutitems.setVisibility(View.VISIBLE);

                sessionManager.createcategorysession(item.get(position).getCategory());
                HashMap<String, String> cat = sessionManager.getcategoryitems();

                CatName.setText(cat.get(SessionManager.KEY_CATEGORY));

                Up.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        Layoutitems.setVisibility(View.GONE);
                        Layoutcategories.setVisibility(View.VISIBLE);
                    }
                });


                items = new ArrayList<>(item.get(position).getItems());
                adapters = new SingleItemAdapter(getContext(),items);
                RecyclerItems.setAdapter(adapters);
                RecyclerItems.addOnItemTouchListener(new RecyclerItemClickListener(getContext(), new AdapterView.OnItemClickListener() {
                    @Override
                    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

                            sessionManager.savetocart(getContext(), items.get(position));
                            Toasty.success(getContext(),"Added to cart",Toast.LENGTH_SHORT,true).show();


                    }

                }));

            }
        }));


        Banner();

        getdata();

        return view;
    }


    private void Banner() {
        bannerSlider.addBanner(new RemoteBanner("http://supa.swagshop.co.ke/Images/moto.png"));
        bannerSlider.addBanner(new RemoteBanner("http://supa.swagshop.co.ke/Images/moto.png"));
        bannerSlider.addBanner(new RemoteBanner("http://supa.swagshop.co.ke/Images/moto.png"));
        bannerSlider.addBanner(new RemoteBanner("http://supa.swagshop.co.ke/Images/moto.png"));

    }


    private void getdata() {
        final ProgressDialog progressDialog = new ProgressDialog(getContext());
        progressDialog.setMessage("Loading Items...");
        progressDialog.show();

        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl(Constants.BASE_URL)
                .addConverterFactory(GsonConverterFactory.create())
                .build();

        InterfaceRequest request = retrofit.create(InterfaceRequest.class);
        Call<JSONResponse> call =request.getJSON();
        call.enqueue(new Callback<JSONResponse>() {
            @Override
            public void onResponse(Call<JSONResponse> call, Response<JSONResponse> response) {

                if (response.isSuccessful()){

                    JSONResponse jsonResponse = response.body();

                    item = new ArrayList<>(jsonResponse.getItem());
                    adapter = new ShopItemAdapter(getContext(),item);
                    Categories.setAdapter(adapter);

                } else {
                    Toasty.warning(getContext(),"Oops! Items could not be loaded",Toast.LENGTH_SHORT,true).show();
                }
                progressDialog.dismiss();
            }

            @Override
            public void onFailure(Call<JSONResponse> call, Throwable t) {
                Toasty.error(getContext(),t.getLocalizedMessage(),Toast.LENGTH_SHORT,true).show();
                Log.d(Constants.TAG,t.getMessage());
                progressDialog.dismiss();
            }

        });

    }

}
package com.carlton.shop;


import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.RectF;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.helper.ItemTouchHelper;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.CheckBox;
import android.widget.TextView;
import android.widget.Toast;

import java.util.ArrayList;
import java.util.List;

import es.dmoral.toasty.Toasty;

import static com.helpshift.util.HelpshiftContext.getApplicationContext;


/**
 * A simple {@link Fragment} subclass.
 */
public class Details extends Fragment {
    private RecyclerView RecyclerDetails;
    private TextView CartPrice;
    private CheckBox CheckCart;

    private List<SingleItem> list;
    private CartAdapter adapter;
    private boolean add = false;
    private Paint p = new Paint();
    private SessionManager sessionManager;



    public Details() {
        // Required empty public constructor
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View view = inflater.inflate(R.layout.fragment_details, container, false);

        RecyclerDetails = (RecyclerView) view.findViewById(R.id.recyclercart);
        CartPrice = (TextView) view.findViewById(R.id.tvcart);
        CheckCart = (CheckBox) view.findViewById(R.id.chkcart);

        sessionManager = new SessionManager(getContext());

        RecyclerDetails.setHasFixedSize(true);
        RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(getContext());
        RecyclerDetails.setLayoutManager(layoutManager);
        list = sessionManager.getItems(getContext());

        RecyclerDetails.addOnItemTouchListener(new RecyclerItemClickListener(getContext(), new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

            }
        }));



        if(list != null){
            Toasty.info(getContext(),"Swipe to go to Next", Toast.LENGTH_LONG,true).show();
            adapter = new CartAdapter(getContext(),list);
            RecyclerDetails.setAdapter(adapter);
            }

        //initswipe();
        return view;
    }
}
public void savetocart(Context context, SingleItem singleitems){
    List<SingleItem>  itemList = getItems(context);

    if (itemList == null) {
       itemList = new ArrayList<>();
    }
    itemList.add(singleitems);
    saveitems(context, itemList);

}