相关疑难解决方法(0)

如何更新RecyclerView适配器数据?

试图找出更新RecyclerView适配器的问题.

在我获得新的产品列表后,我尝试:

  1. 更新创建ArrayList的片段recyclerView,将新数据设置为适配器,然后调用adapter.notifyDataSetChanged(); 那没起效.

  2. 像其他人一样创建一个新的适配器,它适用于他们,但对我没有任何改变: recyclerView.setAdapter(new RecyclerViewAdapter(newArrayList))

  3. 创建一个Adapter更新数据的方法,如下所示:

    public void updateData(ArrayList<ViewModel> viewModels) {
       items.clear();
       items.addAll(viewModels);
       notifyDataSetChanged();
    }
    
    Run Code Online (Sandbox Code Playgroud)

    然后每当我想更新数据列表时,我都会调用此方法; 那没起效.

  4. 要检查我是否可以以任何方式修改recyclerView,并且我尝试删除至少一个项目:

     public void removeItem(int position) {
        items.remove(position);
        notifyItemRemoved(position);
    }
    
    Run Code Online (Sandbox Code Playgroud)

    一切都保持原样.

这是我的适配器:

public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder> implements View.OnClickListener {

    private ArrayList<ViewModel> items;
    private OnItemClickListener onItemClickListener;

    public RecyclerViewAdapter(ArrayList<ViewModel> items) {
        this.items = items;
    }


    public void setOnItemClickListener(OnItemClickListener onItemClickListener) {
        this.onItemClickListener = onItemClickListener;
    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View …
Run Code Online (Sandbox Code Playgroud)

android android-recyclerview

238
推荐指数
9
解决办法
38万
查看次数

无需滚动到顶部即可更新 recyclerView Adapter

我在添加一些数据后尝试更新我的适配器但它没有更新,当我切换其他活动并回来时,适配器这次更新了我的代码:

    void updateAdapter(){
    adapter.setData(getData());
    adapter.notifyDataSetChanged();
    Log.d("TAG"," DATA SIZE AFTER UPDATE : "+getData().size() +" items : "+adapter.getItemCount());

}
Run Code Online (Sandbox Code Playgroud)

我的适配器:

    private void createAdapter(final RecyclerView recyclerView , final List<Information> data) {
    List<Information> content = new ArrayList<>();

    Log.d("TAG","createAdapter Called");

    final int[] currentRowPosition = {0};
    content = data;
    final List<Information> finalContent = content;
     adapter = new ParallaxRecyclerAdapter<Information>(finalContent) {

/// my onBindViewHolder
        @Override
        public void onBindViewHolderImpl(final RecyclerView.ViewHolder viewHolder, final ParallaxRecyclerAdapter<Information> adapter, final int i) {


            currentRowPosition[0] = i;

            if ( i <= finalContent.size() -1 ){

                ((ViewHolder) …
Run Code Online (Sandbox Code Playgroud)

java android android-adapter

5
推荐指数
1
解决办法
4332
查看次数