0
wenn ich meine recycleview
mit notifyDataSetChange()
benachrichtigen wird automatisch nach oben scrollen.Prevent Recycleview scrollen, wenn notifyDataSetChange()
Ich mache diesen Adapter für mehrere Zwecke.
die App ist nur für Tablet.
so kann mir bitte bitte die Lösung dafür geben. ??
Hier ist mein recycleview Adapter.
public class PickersListAdapter extends RecyclerView.Adapter<PickersListAdapter.DataObjectHolder>
{
private Context context;
private ArrayList<PickersModel> pickersModelArrayList;
private ItemsListFragment fragment;
public PickersListAdapter(Context context, ArrayList<PickersModel> pickersModelArrayList, ItemsListFragment itemsListFragment)
{
this.context = context;
this.pickersModelArrayList = pickersModelArrayList;
fragment = itemsListFragment;
}
@Override
public PickersListAdapter.DataObjectHolder onCreateViewHolder(ViewGroup parent, final int viewType)
{
View view = LayoutInflater.from(context).inflate(R.layout.inflate_list_pickers, parent, false);
DataObjectHolder dataObjectHolder = new DataObjectHolder(view);
return dataObjectHolder;
}
@Override
public void onBindViewHolder(final PickersListAdapter.DataObjectHolder holder, final int position)
{
holder.myBackground.setSelected(pickersModelArrayList.get(position).isClicked());
holder.checkBox.setChecked(pickersModelArrayList.get(position).isChecked());
holder.txtItemName.setText(pickersModelArrayList.get(position).getItemName());
holder.txtitemQuantity.setText(pickersModelArrayList.get(position).getQuantity());
Log.e("image url...", pickersModelArrayList.get(position).getItemIcon());
Glide.with(context).load(pickersModelArrayList.get(position).getItemIcon()).placeholder(R.drawable.ic_item_icon).into(holder.imageView);
holder.myBackground.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
for (int i = 0; i < pickersModelArrayList.size(); i++)
{
pickersModelArrayList.get(i).setClicked(pickersModelArrayList.get(position).getItemName().equals(pickersModelArrayList.get(i).getItemName()));
}
notifyDataSetChanged();
}
});
}
@Override
public int getItemCount()
{
return pickersModelArrayList.size();
}
public class DataObjectHolder extends RecyclerView.ViewHolder
{
private CheckBox checkBox;
private ImageView imageView;
private TextView txtItemName, txtitemQuantity;
private LinearLayout myBackground;
public DataObjectHolder(View itemView)
{
super(itemView);
myBackground = (LinearLayout) itemView.findViewById(R.id.myBackground);
checkBox = (CheckBox) itemView.findViewById(R.id.checkBoxPickersItems);
imageView = (ImageView) itemView.findViewById(R.id.imgItemIconPickerItems);
txtItemName = (TextView) itemView.findViewById(R.id.txtItemNamePickerItems);
txtitemQuantity = (TextView) itemView.findViewById(R.id.txtItemQuantityPickerItems);
}
}
}
'setTag'? wozu? Implementiere nur 'OnClickListener' in deinem' ViewHolder', das ist alles – pskink
'setTag()' ist erforderlich, da es in der Liste die Position der Ansicht haben soll, auf die du geklickt hast. Daher sollten sich nur die Änderungen für diese Position widerspiegeln, nicht für jeden Artikel. –
alles was Sie brauchen, ist 'OnClickListener' in Ihrem' ViewHolder' zu implementieren, keine Notwendigkeit für 'setTag' /' getTag', siehe 'ViewHolder' Dokumentation für weitere Informationen – pskink