вижу похожий вопрос здесь
AnimationDrawable в элементе RecyclerView не анимируется в notifyDataSetChanged.
Но не удалось решить эту проблему или исправить. Я думаю, потому что notifyDataSetChanged несколько раз вызывают вызов для обновления пользовательского интерфейса. Пока я комментирую или уведомляю о смене звонка на должность он работает нормально.
У меня есть три пункта в переработанном виде.
- Индикатор выполнения
- Просмотр текста
- Кнопка
Мне нужно вызвать API по нажатию кнопки и увеличить значение textview. в то время как вызовы API мне нужно показать индикатор выполнения и скрыть, пока API заканчивает
Нажатие кнопки, как следует,
holder.image_add_overlay.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
holder.progressBar2.setVisibility(View.VISIBLE);
UpdateProductItem(holder, position);
}
});
private void UpdateProductItem(ShoppinglistAdapter.ViewHolder holder, int position) {
try {
Boolean value = CartFunctions.UpdateCartPostValue(cartAdd, mAPIService);
if (value) {
holder.text_item_cart_count.setText("" + holder.cart_count_value);
// notifyDataSetChanged();
holder.progressBar2.setVisibility(View.GONE);
Task task = new Task();
task.execute();
Toast.makeText(context, context.getResources().getString(R.string.cart_update_toast_message), Toast.LENGTH_SHORT).show();
} else {
holder.cart_count_value = holder.cart_count_value - 1;
}
} catch (IOException e) {
e.printStackTrace();
}
}
Я тоже попробую
@SuppressLint("StaticFieldLeak")
public class Task extends AsyncTask<String, Integer, Integer> {
@Override
protected Integer doInBackground(String... strings) {
Log.i("test", "doInBackground");
// notifyDataSetChanged();
return null;
}
@Override
protected void onPostExecute(Integer integer) {
Log.i("test", "onPostExecute");
notifyDataSetChanged();
super.onPostExecute(integer);
}
}
И вызовите это используя
Task task = new Task();
//task.doInBackground();
task.onPostExecute(0);
Пусть 2 элемента в окне повторного использования одинаковы, поэтому показывается, что оба значения становятся одинаковыми. поэтому мне нужно notifyDataSetChanged () вместо notifyItemChanged (position);
Кто-нибудь, ребята, знали решение?