Так что я некоторое время пытался заставить это работать, но я не могу понять, где я иду не так.Я пытаюсь использовать SparseBooleanArray
для хранения state
из checkboxes
при прокрутке;вместо их удаления.
Я использовал метод 3 в этом учебном пособии
Ниже мой Адаптер , где я пытаюсь реализовать код...
import android.support.v7.widget.RecyclerView;
import android.util.SparseBooleanArray;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CheckBox;
import android.widget.TextView;
import java.util.List;
public class CharsAdapter extends RecyclerView.Adapter<CharsAdapter.MyViewHolder> {
private SparseBooleanArray itemStateArray= new SparseBooleanArray();
private List<StarList> starlList;
public class MyViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
public TextView chname, stname;
public CheckBox recchar;
public MyViewHolder(View view) {
super(view);
chname = (TextView) view.findViewById(R.id.chname);
stname = (TextView) view.findViewById(R.id.stname);
recchar = (CheckBox) view.findViewById(R.id.recchar);
view.setOnClickListener(this);
}
void bind(int position) {
// use the sparse boolean array to check
if (!itemStateArray.get(position, false)) {
recchar.setChecked(false);}
else {
recchar.setChecked(true);
}
}
@Override
public void onClick(View v) {
int adapterPosition = getAdapterPosition();
if (!itemStateArray.get(adapterPosition, false)) {
recchar.setChecked(true);
itemStateArray.put(adapterPosition, true);
}
else {
recchar.setChecked(false);
itemStateArray.put(adapterPosition, false);
}
}
}
public CharsAdapter(List<StarList> starlList) {
this.starlList = starlList;
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.char_list_row, parent, false);
return new MyViewHolder(itemView);
}
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
holder.bind(position);
StarList starlist = starlList.get(position);
holder.chname.setText(starlist.getChname());
holder.stname.setText(starlist.getStname());
}
@Override
public int getItemCount() {
return starlList.size();
}
}
Любая помощь вообще была бы потрясающей!