gpt4 book ai didi

java - onBindViewHolder 方法有什么问题

转载 作者:行者123 更新时间:2023-12-01 19:14:05 26 4
gpt4 key购买 nike

我在 CardAdapter 中使用 onBindViewHolder。它包括 checkedTextViewonClick 方法。我试图获取这些文本并将其放入 Arraylist(sharedP) 中。但是 ArrayList 只返回最后一个元素。我的错在哪里?

public void onBindViewHolder(@NonNull final CardTasarimTutucu holder, int position) {

SharedPreferences sp = mContext.getSharedPreferences("checked",Context.MODE_PRIVATE);

e=sp.edit();
sharedP= new ArrayList<>();
word = words.get(position).getMean();
Log.e("getMean",word);
id= words.get(position).getId();
str= new StringBuffer("");

holder.rowText.setText(word);
holder.rowText.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
if (holder.rowText.isChecked()) {

sharedP.remove(sharedP.indexOf(word));
flag=false;
holder.rowText.setCheckMarkDrawable(null);
holder.rowText.setChecked(false);

} else {

sharedP.add(word);
flag=true;
Log.e("deneme",word);
holder.rowText.setCheckMarkDrawable(R.drawable.ic_check_black_24dp);
holder.rowText.setChecked(true);

}

str.delete(0,str.length());
for(int i=0;i<sharedP.size();i++){
Log.e("sharedpreference1",sharedP.get(i).toString());
str.append(sharedP.get(i));
str.append(".");

}
if(flag==false){
e.remove("str");
e.commit();
}
Log.e("size",str.toString());
e.putString("str", str.toString());
e.remove("set");

e.commit();

}

});




}

example of checkedTextView

shared preference

最佳答案

首先onBindViewHolder正在调用 RecyclerView 中的每一项为了显示 View 项中每个位置的数据。所以它就像一个循环。在您的代码中初始化 sharedP里面的数组 onBindViewHolder sharedP= new ArrayList<>(); 。因此,对于您传递/滚动的每个项目,数组将再次初始化,并且前一个项目将丢失。换句话说,当您到达列表末尾时,列表中将只有 1 个项目,即最后一个项目。

关于java - onBindViewHolder 方法有什么问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59438483/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com