当前位置: 首页 > 知识库问答 >
问题:

SharedPreferences没有给出正确的位置值?

马天逸
2023-03-14
SharedPreferences setPref = v.getContext().getSharedPreferences("PlanetAdapter", Context.MODE_PRIVATE);
                    setPref.edit().putInt("position", position).commit();
SharedPreferences getPref = getActivity ().getSharedPreferences("PlanetAdapter", Context.MODE_PRIVATE);
                int pos = getPref.getInt("position",0);

RecyclerView.Adapter

public class PlanetAdapter extends RecyclerView.Adapter<PlanetAdapter.PlanetViewHolder> {


    public interface OnItemClickListener {
        void onItemClick(String item);
    }


    private ArrayList<String> episodeslist;
    private OnItemClickListener listener;

    public PlanetAdapter(ArrayList<String> episodeslist, OnItemClickListener listener) {
        this.episodeslist = episodeslist;
        this.listener = listener;
    }

    @Override
    public PlanetAdapter.PlanetViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View v= LayoutInflater.from(parent.getContext()).inflate(R.layout.planet_row, parent,false);
        PlanetViewHolder vh=new PlanetViewHolder(v);
        return vh;
    }

    @Override
    public void onBindViewHolder(PlanetAdapter.PlanetViewHolder vh, int position) {
        TextView tv = (TextView) vh.itemView;
        tv.setText(episodeslist.get(position));
        tv.setCompoundDrawablesWithIntrinsicBounds(R.drawable.bg, 0, 0, 0);

        vh.bind(episodeslist.get(position), listener);

        //holder.image.setImageResource(R.drawable.planetimage);
        vh.text.setText(episodeslist.get(position).toString());
    }



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



    public class PlanetViewHolder extends RecyclerView.ViewHolder{
        protected TextView text;
        public PlanetViewHolder(View itemView) {
            super(itemView);
            text= (TextView) itemView.findViewById(R.id.text_id);
        }
        public void bind(final String item, final OnItemClickListener listener) {
            itemView.setOnClickListener(new View.OnClickListener() {
                @Override public void onClick(View v) {
                    int position = getPosition();
                     listener.onItemClick(item);

                    SharedPreferences setPref = v.getContext().getSharedPreferences("PlanetAdapter", Context.MODE_PRIVATE);
                    setPref.edit().putInt("position", position).commit();
                }
            });
        }
    }
}

共有1个答案

邰博远
2023-03-14

我想说两种选择:

更改PlanetViewWholder以接收位置

public void bind(final String item, final Int position, final OnItemClickListener listener)

然后从OnBindViewWholder执行以下操作:

public interface OnItemClickListener {
        void onItemClick(String item, Int position);
    }
listener.onItemClick(item, position); // <-- Not the getPosition()
 类似资料:
  • 我是机器学习和OpenCV的新手。我从Cohn-Kanade人脸数据库中为每种情绪(中性和快乐)拍摄了一组10张图像。然后,我从每个图像中提取面部特征,并将它们放入我的训练数据矩阵中,并为各自的情绪分配标签(例如:0表示中性,1表示快乐)。 我使用了gamma=0.1和C=1的RBF内核。经过训练后,我将从智能手机摄像头中提取出的面部特征用于预测。预测总是返回1。 如果我增加中性表达式的训练样本数

  • 我试图找出如何计算CRC为非常简单的SDLC帧。 使用MLT我捕获流,我看到一些简单的帧被发送出去,如:0x3073F9E3和0x3011EDE3 null 这将给出输出B8ED,所以最后一个字节是ed。 有什么想法吗?

  • 我是一个初学者程序员,我试图做一个简单的计算器,但由于某种原因,按钮似乎不能正常工作,它们要么消失,填满整个面板,要么设置在错误的位置。奇怪的是,当我悬停并在按钮上点击鼠标时,按钮就会出现。我可能会错过一些非常明显的东西,但请帮助(此外,代码不是很干净)。谢谢你! 主要的 计算器按钮 窗

  • 我已经阅读了这篇文章,并确保将TEMP和TMP的系统变量和用户变量分别设置为C:\TEMP和C:\TMP。我已经重新启动了我的机器两次,但当我的应用程序调用系统时。getProperty(“java.io.tmpdir”)它一直指向C:\Program Files\Apache Software Foundation\Tomcat 8.5\temp。为什么要这样做?我如何才能让它指向C:\Temp

  • 为了解决这个问题,我尝试了许多JDK版本,但似乎无论我使用哪个java,结果总是一样的。 MavenReportException:创建存档时出错:无法找到javadoc命令:未正确设置环境变量JAVA_HOME。 我跑了: 导出JAVA_HOME=/usr/lib/jvm/JAVA-8-openjdk-amd64 : MavenReportException:创建存档时出错:无法找到javado

  • 我正试图用cordova构建一个android项目,但我在使用JDK时遇到了麻烦。 我已经确定路径是正确的,并指向我的JDK: 当我在命令提示符中运行echo%JAVA_HOME%时,它会显示 C:\Program Files\Java\jdk1.7.0_55\bin 但是当我运行cordova构建命令时,它显示JAVA_HOME当前设置 我还在名为java_home的路径下设置了一个系统变量,并