如何在RecyclerView.Adapter中使用共享首选项? [英] How to use shared preferences in RecyclerView.Adapter?

查看:70
本文介绍了如何在RecyclerView.Adapter中使用共享首选项?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何在RecyclerView.Adapter ..中使用共享的首选项?我已经在RecyclerView.Adapter ..中使用了共享首选项值,但是共享首选项没有任何节省..确切地说,我必须在RecyclerView.Adapter或活动中使用共享首选项..?

How to use shared preferences in RecyclerView.Adapter..? i have used shared preference value in RecyclerView.Adapter..but nothing is saving in shared preference..where exactly i have to use shared preference ..?in RecyclerView.Adapter or activity..?

public class CardAdapter extends RecyclerView.Adapter<CardAdapter.ViewHolder> {

    private ImageLoader imageLoader;
    private Context context;
    private String gd;

    public static final String SHARED_PREF_NAME = "myloginapp";
    //We will use this to store the boolean in sharedpreference to track user is loggedin or not
    public static final String LOGGEDIN_SHARED_PREF = "loggedin";
    public static final String GROUPSNAME_SHARED_PREF = "groupname";

    public CardAdapter(Context context) {
        this.context = context;
    }

        //List of superHeroes
        List<Group> groups;

        public CardAdapter(List < Group > groups, Context context) {
            super();
            //Getting all the superheroes
            this.groups = groups;
            this.context = context;
        }

        @Override
        public ViewHolder onCreateViewHolder (ViewGroup parent,int viewType){
            View v = LayoutInflater.from(parent.getContext())
                    .inflate(R.layout.groups_list, parent, false);
            ViewHolder viewHolder = new ViewHolder(v);
            return viewHolder;
        }

        @Override
        public void onBindViewHolder (ViewHolder holder,int position){

            Group group1 = groups.get(position);

            imageLoader = CustomVolleyRequest.getInstance(context).getImageLoader();
            imageLoader.get(group1.getPic(), ImageLoader.getImageListener(holder.imageView, R.drawable.ic_launcher, android.R.drawable.ic_dialog_alert));

            holder.imageView.setImageUrl(group1.getPic(), imageLoader);
            holder.groupname.setText(group1.getGname());//i want to store this value in shared preference..
            holder.groupinfo.setText(group1.getGinfo());
            gd = holder.groupname.getText().toString();//variable gd is storing any value.
            holder.add.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Intent intent = new Intent(context, Viewgroup1.class);
                    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                    context.startActivity(intent);
                }
            });

        }

        @Override
        public int getItemCount () {
            return groups.size();
        }

        class ViewHolder extends RecyclerView.ViewHolder {
            public NetworkImageView imageView;
            public TextView groupname;
            public TextView groupinfo;
            public Button add;


            public ViewHolder(View itemView) {
                super(itemView);
                imageView = (NetworkImageView) itemView.findViewById(R.id.imageViewHero);
                groupname = (TextView) itemView.findViewById(R.id.textViewName);
                groupinfo = (TextView) itemView.findViewById(R.id.textViewRank);
                add = (Button) itemView.findViewById(R.id.button7);
                //String gd = holder.groupname.getText().toString();

                SharedPreferences sharedPreferences1 = context.getSharedPreferences(SHARED_PREF_NAME, Context.MODE_PRIVATE);

                //Creating editor to store values to shared preferences
                SharedPreferences.Editor editor = sharedPreferences1.edit();

                //Adding values to editor
                editor.putBoolean(LOGGEDIN_SHARED_PREF, true);
                editor.putString(GROUPSNAME_SHARED_PREF, gd);

            }
        }
    } 

Viewgroup.java

public class Viewgroup extends AppCompatActivity {

    //Creating a List of superheroes
    private List<Group> listSuperHeroes;
    private String vault;
    //Creating Views
    private RecyclerView recyclerView;
    private RecyclerView.LayoutManager layoutManager;
    private RecyclerView.Adapter adapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.recycle);

        //Initializing Views
        recyclerView = (RecyclerView) findViewById(R.id.recyclerView);
        recyclerView.setHasFixedSize(true);
        layoutManager = new LinearLayoutManager(this);
        recyclerView.setLayoutManager(layoutManager);

        //Initializing our superheroes list
        listSuperHeroes = new ArrayList<>();
        SharedPreferences sharedPreferences = getSharedPreferences(ProfileLogin.SHARED_PREF_NAME, MODE_PRIVATE);
        vault = sharedPreferences.getString(ProfileLogin.EMAIL_SHARED_PREF,"Not Available");
        //Calling method to get data
        getData();
    }

    //This method will get data from the web api
    private void getData(){
        //Showing a progress dialog
        final ProgressDialog loading = ProgressDialog.show(this,"Loading Data", "Please wait...",false,false);

        //Creating a json array request
        JsonArrayRequest jsonArrayRequest = new JsonArrayRequest(Config.DATA_URL+vault,
                new Response.Listener<JSONArray>() {
                    @Override
                    public void onResponse(JSONArray response) {
                        //Dismissing progress dialog
                        loading.dismiss();

                        //calling method to parse json array
                        parseData(response);
                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {

                    }
                });

        //Creating request queue
        RequestQueue requestQueue = Volley.newRequestQueue(this);

        //Adding request to the queue
        requestQueue.add(jsonArrayRequest);
    }

    //This method will parse json data
    private void parseData(JSONArray array){
        for(int i = 0; i<array.length(); i++) {
            Group group1 = new Group();
            JSONObject json = null;
            try {
                json = array.getJSONObject(i);
                group1.setPic(json.getString(Config.TAG_IMAGE_URL));
                group1.setGname(json.getString(Config.TAG_NAME));
                group1.setGinfo(json.getString(Config.TAG_INFO));

            } catch (JSONException e) {
                e.printStackTrace();
            }
            listSuperHeroes.add(group1);
        }

        //Finally initializing our adapter
        adapter = new CardAdapter(listSuperHeroes, this);

        //Adding adapter to recyclerview
        recyclerView.setAdapter(adapter);


       /* recyclerView.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                final Button add = (Button)  v.findViewById(R.id.button7);
                final TextView txtStatusChange = (TextView) v.findViewById(R.id.textViewName);
                //final TextView txtStatusChange1 = (TextView) v.findViewById(R.id.textView33);
                add.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {

                        Intent intent = new Intent(Viewgroup.this, Viewgroup1.class);
                        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                        startActivity(intent);
                        // Log.e(TAG_IMAGE_URL, "hello text " + txtStatusChange.getText().toString() + " TAG " + txtStatusChange.getTag().toString());
                        Toast.makeText(Viewgroup.this, txtStatusChange.getText().toString(), Toast.LENGTH_SHORT).show();
                    }
                });
                return false;
            }
        });*/
    }
}

推荐答案

为什么共享首选项未更新.?

why the shared preference is not updating..?

在启动Activity之前使用Button的onClick方法将值保存在Sharedpreferences中,例如:

Use onClick method of Button before starting Activity to save value in Sharedpreferences like:

...
gd = holder.groupname.getText().toString();
holder.add.setTag(gd);
...
     @Override
     public void onClick(View view) {
         String strValue=view.getTag().toString();
         ... save  strValue in Sharedpreferences
         ...
         editor.putString(GROUPSNAME_SHARED_PREF, strValue);
         editor.apply();
         // start new Activity..
      }
...

这篇关于如何在RecyclerView.Adapter中使用共享首选项?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆