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);
}
}
}