Whenever I add multiple items, for example more than 7 and that's scroll to the top. The top items are lost. When I go back down the bottom items are also lost
After entering the data, if i scroll after adding the item as scrollable, the data disappears.
As a further explanation, sometimes the entered data appears in other items that have been added.
This code works fine in few device mostly once that use android 11 (not all). it dosn't work on android 12 and 13 (the devices i tested on) Activity Code
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_new_bismi_order);
activity = this;
initialization();
items = new ArrayList<>();
items.add(new BisimiOrder("", ""));
newBismiOrderADB = new NewBismiOrderADBTwo(items);
as_act_recyView_sale.setLayoutManager(new LinearLayoutManager(this));
as_act_recyView_sale.setAdapter(newBismiOrderADB);
distua_act_but_promo_add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
BisimiOrder newItem = new BisimiOrder("", "");
newBismiOrderADB.addItem(newItem);
}
});
I have used "setHasStableIds(true)" and "holder.setIsRecyclable(false)" but it didn't have any effect.
i have also used getItemId() and getItemViewType() but it didn't have any effect. Adapter Code
public class NewBismiOrderADBTwo extends RecyclerView.Adapter<NewBismiOrderADBTwo.ViewHolder> {
private ArrayList<BisimiOrder> items;
publicNewBismiOrderADBTwo(ArrayList<BisimiOrder> items) {
this.items = items;
setHasStableIds(true);
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.bismi_sales_order_adp, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull final ViewHolder holder, int position) {
holder.setIsRecyclable(false);
BisimiOrder item = items.get(position);
holder.sa_adp_txt_sn1.setText(String.valueOf(position + 1));
holder.sa_adp_actv_item1.setText(item.getName());
holder.adp_as_edt_qty.setText(item.getQuantity());
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public int getItemViewType(int position) {
return position;
}
@Override
public int getItemCount() {
return items.size();
}
public void addItem(BisimiOrder item) {
items.add(item);
notifyItemInserted(items.size() - 1);
}
public ArrayList<BisimiOrder> getItems() {
return items;
}
public class ViewHolder extends RecyclerView.ViewHolder {
public TextView sa_adp_txt_sn1, adp_as_txt_net_amnt;
public AutoCompleteTextView sa_adp_actv_item1;
public EditText adp_as_edt_qty;
public ViewHolder(@NonNull View itemView) {
super(itemView);
sa_adp_actv_item1 = itemView.findViewById(R.id.adp_as_actv_item);
sa_adp_txt_sn1 = itemView.findViewById(R.id.adp_as_txt_sn);
adp_as_edt_qty = itemView.findViewById(R.id.adp_as_edt_qty);
adp_as_txt_net_amnt = itemView.findViewById(R.id.adp_as_txt_net_amnt);
}
}
}
I tried (TableViewAdapter.DataviewHolder) .bind() doing this and creating another class as I saw that was done in another thread(Why do values disappear after scrolling in Recycler View?) Its a lot like my problem. I just can't seem to implement his solution to make mine work. ( don't understand his solution fully)