android - notifyDataSetChange 不适用于 RecyclerView

标签 android android-support-library custom-adapter android-recyclerview

我正在使用 Android 的新 RecyclerView,但每当我调用“通知”方法之一时,我都无法让我的自定义适配器刷新。

我尝试调用 notifyDataSetChanged、notifyItemRangeInserted 和 notifyItemInserted,但它们似乎都不起作用。

这是我的自定义适配器的代码。我基本上是在尝试刷新字符串列表:

package com.mycompany.myapp.adapters;

import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.TextView;

import com.mycompany.myapp.R;

import java.util.List;

public class FeedAdapter extends RecyclerView.Adapter<FeedAdapter.ViewHolder> {

    private List<String> mDataset;

    public FeedAdapter(List<String> dataset) {
        super();
        mDataset = dataset;
    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int i) {
        LinearLayout v = (LinearLayout) LayoutInflater.from(parent.getContext())
                .inflate(R.layout.list_item_feed, parent, false);
        v.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
                ViewGroup.LayoutParams.WRAP_CONTENT));
    return new ViewHolder(v);
    }

    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        holder.setText(mDataset.get(position));
    }

    @Override
    public int getItemCount() {
        return mDataset.size();
    }

    public void setDataset(List<Status> dataset) {
        mDataset = dataset;
        // This isn't working
        notifyItemRangeInserted(0, mDataset.size());
    }

    public static class ViewHolder extends RecyclerView.ViewHolder {
        private TextView mFeedText;

        public ViewHolder(View v) {
            super(v);
            mFeedText = (TextView) v.findViewById(R.id.feed_text);
        }

        private void setText(String text) {
            mFeedText.setText(text);
        }
    }
}

还有其他人有这个问题吗?

谢谢!

最佳答案

我的问题是我没有在主线程上通知更改,因此更改不是立即可见的。与 here 指出的问题相同.

关于android - notifyDataSetChange 不适用于 RecyclerView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24495542/

相关文章:

android - Android 中默认的后退按钮导航动画

android - Resources$NotFoundException : If the resource you are trying to use is a vector resource, 您可能以不受支持的方式引用它

android - 带有自定义适配器错误的 Chris Banes PullToRefreshListView

android - 使用 Android styles.xml 时是否有规则或异常

android - codenameone 和 Opentok native 接口(interface)

android - 使用 sdk 高于我的最低 SDK 的 API

java - 无法解析方法 getChildFragmentManager()

android - 在 Android Studio 0.8.9 上导入 actionbarsherlock

java - 访问 AutoCompleteTextView 的 CustomAdapter 中所选项目的值

java - 如何在android中的自定义列表适配器中显示来自服务器的带有标题和描述的图像