Существует проблема, когда я открываю действие и прокручиваю до последней строки / значения в RecyclerView.
notifyItemChanged(dataViewHolder.getAdapterPosition());
с помощью этой строки RecyclerView изменяет значение, но приложение вылетает после последнего значения.
mRecyclerView.post(new Runnable() {
@Override public void run() {
notifyItemChanged(dataViewHolder.getAdapterPosition());
}
});
И другой метод, который я использую, приложение не вызывает сбой, ноПоследнее значение - бесконечный цикля хочу только приращение 1 Значение Как в RecyclerView Last Row Значение равно 19, поэтому я использую Int num +1;и 19 + число;= 20;гайка в Runnable Method Value - это бесконечный цикл.Пожалуйста помоги !Заранее спасибо ...
Внизу СМОТРИТЕ ПОЛНЫЙ КОД ...
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);
}
}
}