如何在 RecyclerView.Adapter 中使用共享首选项?

2024-01-12

如何在 RecyclerView.Adapter 中使用共享首选项..?我在 RecyclerView.Adapter 中使用了共享首选项值..但是共享首选项中没有保存任何内容..我必须在 RecyclerView.Adapter 或活动中使用共享首选项..?

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);

            }
        }
    } 

视图组.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;
            }
        });*/
    }
}

你应该添加editor.commit() or editor.apply()为了将您的数据保存到Sharedpreferences。在您的代码下方添加此内容

//Adding values to editor
editor.putBoolean(LOGGEDIN_SHARED_PREF, true);
editor.putString(GROUPSNAME_SHARED_PREF, gd);
editor.apply();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 RecyclerView.Adapter 中使用共享首选项? 的相关文章

  • 在 Android 中获取联系方式需要花费大量时间?

    您好 目前正在做一个与联系人相关的项目 我正在从联系人中获取详细信息 电子邮件 电话号码和联系人姓名 效果很好 但问题是获取联系方式需要很长时间 超过 1000 个联系人 包括从社交网站同步的联系人 这样我就放了一个Asynchronous
  • SQLite 中的 NOT NULL 列和错误捕获

    我有一个由用户定义的 EditText 填充的数据库 所有编辑文本都不允许有空字段 我知道我可以通过几个简单的 if 语句来检查这一点 if myEditText getText toString equals display error
  • 如何在状态更改时更改 Android 切换按钮的文本颜色?

    我的切换按钮对于每个状态都有不同的颜色背景 红色和白色 现在我需要在激活时更改切换按钮文本 红色 白色 的颜色 使用 xml 我无法让它工作 也许有人知道我做错了什么 我的布局 xml 中的按钮
  • 如何在Android中将文件转换为base64(如.pdf、.text)?

    如何将 SD 卡文档 pdf txt 转换为 Base 64 字符串并将字符串发送到服务器 这个方法对我有用 String encodeFileToBase64Binary encodeFileToBase64Binary yourFile
  • InflateException 膨胀类 android.support.design.widget.CoordinatorLayout 时出错

    E AndroidRuntime 致命异常 main 进程 com atech a business PID 30662 java lang RuntimeException 无法启动活动 ComponentInfo com atech a
  • 针对 Android 开发优化 Eclipse

    我使用 Eclipse 和 ADT 插件开发 Android 而且速度 很慢 我必须经常重新启动 当我打开各种 Android 项目 当我使用库项目时需要 时 情况会变得更糟 使用 ADT 插件时 是否可以进行任何具体优化来提高 Eclip
  • 如何实现可运行队列

    我正在尝试实现一个可运行队列 在异步任务期间依次执行 意味着队列中的下一个将在另一个完成后执行 我编写了一个管理器来管理这些可运行对象和本身就是可运行对象的任务 然后 我获取异步任务中的第一个任务并运行它 希望它能够在队列中运行 但是它最终
  • Android - 对话框内VideoView的MediaController出现在对话框后面

    我有一个VideoView在自定义对话框中 我正在为VideoView即时并将其分配给VideoView在代码中 但是控制器实际上并没有出现在视频上 它出现在对话框后面 知道如何让控制器位于视频上方吗 我创建了一个静态对话框帮助器类来帮助构
  • Android 缩放和密度问题

    Update 一些研究表明 华硕 Transformer TF700T 高端 的像素密度应约为 224 因此 android 报告的 159 值要么是错误的 要么已被某种方式修改 system 中的 lcd 密度键 build prop 由
  • GpsStatusListener:尽管状态为 GpsStatus.GPS_EVENT_FIRST_FIX,但修复中未使用卫星

    我向我的位置管理器添加了一个 GPS 状态侦听器 以便查看何时获得第一个修复 当我收到 GPS EVENT FIRST FIX 时 我会循环遍历所有卫星 但为什么修复中没有使用它们 usedInFix 我的日志对所有卫星都显示 错误 fin
  • Android 原生 AAssetManager 的文件层次结构

    Issue 我想知道如何从本机代码创建 Android 中资产文件夹的文件层次结构 我在用着AAssetManager openDir but AAssetDir getNextFileName不返回任何目录名称 因此基本上我无法深入了解层
  • 当我单击 GridView 项时返回 ImageView 实例

    当我点击GridView项时如何返回ImageView实例 我为 ItemClick 创建自定义绑定事件 public class ItemClickSquareBinding MvxBaseAndroidTargetBinding pri
  • 如果从超链接打开,应用程序将启动两次

    我正在开发一个应用程序 可以从多个地方启动 例如日历中的超链接 我在以下场景中面临问题 如果应用程序已启动并在后台运行 并且用户单击本机日历中的事件 超链接来启动应用程序 我的应用程序作为新实例启动两次 在正在运行的应用程序列表中 我可以看
  • Android 中 Activity 的服务回调

    我有我的 GPSTracker 的摘要 它返回用户的位置 其作品 public class GPSTracker extends Service implements LocationListener public GPSTracker C
  • Android HTTP PUT 请求

    谁能给我一个HTTP PUT请求 Android 的示例代码 假设您想使用 HttpURLConnection 要执行 HTTP PUT 请使用以下命令 URL url new URL http www example com resour
  • Android 中可以导入 java.rmi.* 吗?

    我的分布式系统课程中有一个项目 我们必须在我们的项目中使用 java rmi 而且我知道由于 dalvik VM 问题 android 不提供这个库 所以我只是想问是否可以在 Android 上使用这些库 Thanks Android 不支
  • 如何在清单文件中添加符合我意图的标志

    我们知道 我们可以使用 java 代码中的 addFlags 方法将一些标志添加到我们的意图中 有什么方法可以将这些标志添加到清单文件本身中 而不是用 java 代码编写 我需要为清单中的一项活动添加 REORDER TO FRONT 标志
  • 在片段视图之间切换

    在 xml 布局文件中声明片段的标准方法是
  • 切换按钮形状不变

    我正在尝试制作一个带有绿色背景的圆形切换按钮 我用了
  • PinnedHeaderListView 滚动和标题问题

    背景 我正在尝试模仿 Lollipop 的联系人应用程序显示联系人首字母的固定标题的方式 正如我所写的here https stackoverflow com q 27621425 878126 问题 由于原始代码 发现here http

随机推荐