Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/220.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java RecyclerView项中的ProgressBar未在notifyDataSetChanged上设置动画_Java_Android_Android Recyclerview_Notifydatasetchanged - Fatal编程技术网

Java RecyclerView项中的ProgressBar未在notifyDataSetChanged上设置动画

Java RecyclerView项中的ProgressBar未在notifyDataSetChanged上设置动画,java,android,android-recyclerview,notifydatasetchanged,Java,Android,Android Recyclerview,Notifydatasetchanged,我看到一个类似的问题 RecyclerView项中的AnimationDrawable未在notifyDataSetChanged上设置动画。 但无法解决此问题或修复。我认为这是因为notifyDataSetChanged多次调用以更新UI。当我对这个职位进行评论或通知变更时,它工作得很好。 我在回收视图中有三个项目 进度条 文本视图 钮扣 我需要在单击按钮时调用API并增加textview值。当API调用时,我需要显示进度条并在API完成时隐藏 按钮点击如下: holder.image_add

我看到一个类似的问题 RecyclerView项中的AnimationDrawable未在notifyDataSetChanged上设置动画。 但无法解决此问题或修复。我认为这是因为notifyDataSetChanged多次调用以更新UI。当我对这个职位进行评论或通知变更时,它工作得很好。 我在回收视图中有三个项目

  • 进度条
  • 文本视图
  • 钮扣
  • 我需要在单击按钮时调用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);
        }
    }
    
    可能recyclerview中的2项相同,因此计数显示为两者相同。所以我需要notifyDataSetChanged()而不是notifyItemChanged(position); 有人知道这个解决方案吗?

    doInBackground()
    方法在单独的线程中工作,甚至在UI线程上也不工作

    public class Task extends AsyncTask<Void, Void, Void> {
    
        @Override
        protected Void doInBackground(Void... params) {
            return null;
        }
    
        @Override
        protected void onPostExecute(Void result) {
            adapter.notifyDataSetChanged();
        }
    }
    
    在UI线程上通知适配器,从
    AsyncTask
    onPreExecute()
    &
    onPostExecute()
    方法在UI线程上工作

    public class Task extends AsyncTask<Void, Void, Void> {
    
        @Override
        protected Void doInBackground(Void... params) {
            return null;
        }
    
        @Override
        protected void onPostExecute(Void result) {
            adapter.notifyDataSetChanged();
        }
    }
    

    有关更多详细信息,请参阅。

    在onPostExecute()方法中调用notifyDataSetChanged(),我将尝试并更新您的
    异步任务的要点是什么?@Vij我尝试使用onPostExecute(),但是问题仍然是一样的请添加与
    Progressbar
    RecyclerView.Adapter
    Activity
    相关的数据。我更新了这个问题,让它过去吧,我仍然面临这个问题。我有一个疑问,为什么需要
    AysncTask
    在这里?如何获得适配器。notifyDataSetChanged();在onPostExecute()中。如果没有AysncTask,我们可以在RecyclerView项中获得ProgressBar,而不是在notifyDataSetChangedYes上设置动画,我认为这与
    异步任务
    无关。
    Task task = new Task();
    task.execute();