0

There is a Problem, When i Open the Activity and scroll to last Row/Value in RecyclerView.


notifyItemChanged(dataViewHolder.getAdapterPosition()); 

with This Line RecyclerView change the value but App Crash After last value is showing.


 mRecyclerView.post(new Runnable() {
            @Override public void run() {
                notifyItemChanged(dataViewHolder.getAdapterPosition());
            }
                }); 

AND Other Method i use App is not crashing but Last Value is infinite Looping. i want incremet only 1 Value Like in RecyclerView Last Row Value is 19 so i use Int num +1; and 19 + num; = 20; nut in Runnable Method Value is infinite looping. Please HELP ! Thanks in Advance...

In Below SEE THE FULL CODE...

public class TransactionHistoryAdapter extends 
RecyclerView.Adapter<TransactionHistoryAdapter.DataViewHolder> {

public Context context;
ArrayList<Transaction> Listtransactions ;
DataViewHolder _dataViewHolder;

public TransactionHistoryAdapter(Context context, ArrayList<Transaction> transactions) {
    this.context = context;
    this.Listtransactions = transactions;
}
@NonNull
@Override
public DataViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {


    View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.payment_list,viewGroup,false);

  return new DataViewHolder(view);

}

private RecyclerView mRecyclerView;
@Override
public void onBindViewHolder(@NonNull final DataViewHolder dataViewHolder, final int position) {

    final Transaction Mtransaction = Listtransactions.get(position); //getList Data to Model
    int num = 0;
    dataViewHolder.entryDate.setText(Mtransaction.getTransactionEntryDate());
    dataViewHolder.RemainingAmount.setText(Mtransaction.getTransactionRemainingAmount());
    dataViewHolder.PaidAmount.setText(Mtransaction.getTransactionPaidAmount());

    int ListLastValue =Integer.parseInt( Listtransactions.get(Listtransactions.size() -1).getTransactionRemainingAmount());
    int ValuefrmRecycler =  Integer.parseInt( Listtransactions.get(dataViewHolder.getAdapterPosition()).getTransactionRemainingAmount());


    if(ListLastValue == ValuefrmRecycler)
    {
        num = 1;
        Listtransactions.get(dataViewHolder.getAdapterPosition()).setTransactionRemainingAmount(String.valueOf(ListLastValue + num));

            // METHOD NO.1 == App Crash   
            notifyItemChanged(dataViewHolder.getAdapterPosition());

        // METHOD NO.2 == InfiniteLoop
     /*   mRecyclerView.post(new Runnable() {
            @Override public void run() {
                //  notifyDataSetChanged();
                notifyItemChanged(dataViewHolder.getAdapterPosition());
            }
        }); */

        }
}



@Override
public void onAttachedToRecyclerView(RecyclerView recyclerView) {
    super.onAttachedToRecyclerView(recyclerView);
    mRecyclerView = recyclerView;
}



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


public class DataViewHolder extends RecyclerView.ViewHolder {

    TextView entryDate,PaidAmount,RemainingAmount;

    public DataViewHolder(View view) {
        super(view);

        entryDate=(TextView) view.findViewById(R.id.tvdate);
        PaidAmount = (TextView) view.findViewById(R.id.tvPaid);
        RemainingAmount = (TextView) view.findViewById(R.id.tvRemaining);

    }
}

}

0 Answers0