小编Isa*_*c16的帖子

React Native中的RecyclerView:notifyItemInserted()和notifyDataSetChanged()无效

我正在尝试在React Native应用程序中集成Firebase支持的RecyclerView.使用硬编码数据可以很好地工作,但是在插入动态加载的行并在RecyclerView.Adapter上调用notifyItemInserted()或notifyDataSetChanged()时,RecyclerView本身并不反映这一变化.这将显示为初始空白视图,直到点击应用程序的刷新按钮,其唯一效果是从React Native端重新渲染RecyclerView,或直到滚动或屏幕方向更改为止.

在阅读了本网站上的十几个或更多问题后,关于不涉及React Native的类似问题并尝试了大多数常见解决方案,我怀疑这个问题与React Native有关.

鉴于React Native的列表视图实现存在持续性能问题,找到解决方案可能对许多人有所帮助.

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

    ArrayList<Post> mDataset;

    public PostsAdapter(ArrayList<Post> list){
        mDataset = list;
    }

    public static class ViewHolder extends RecyclerView.ViewHolder {
        public LinearLayout mPostView;
        public ViewHolder(LinearLayout v) {
            super(v);
            mPostView = v;
        }
    }

    @Override
    public PostsAdapter.ViewHolder onCreateViewHolder(ViewGroup parent,
                                                   int viewType) {
        LinearLayout v = (LinearLayout) LayoutInflater.from(parent.getContext())
                .inflate(R.layout.post, parent, false);
        ViewHolder vh = new ViewHolder(v);
        return vh;
    }

    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        TextView tv = (TextView) holder.mPostView.findViewById(R.id.title); …
Run Code Online (Sandbox Code Playgroud)

android reactjs android-recyclerview react-native firebase-realtime-database

2
推荐指数
1
解决办法
972
查看次数