Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/233.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
Android 如何始终获取recyclerview的第一个元素?_Android_Android Recyclerview - Fatal编程技术网

Android 如何始终获取recyclerview的第一个元素?

Android 如何始终获取recyclerview的第一个元素?,android,android-recyclerview,Android,Android Recyclerview,我想从recyclerview中删除特定项(第一项!) 这不是问题: //items variable is my Arraylist items.remove(0); 当我看到这个项目时,它工作正常。但当我滚动时,recyclerview会自动更新,如果我滚动,则尝试删除该项目,而不是第一个项目(0)。在任何情况下删除第一项的代码是什么 谢谢大家! private-List-mItems; private List<Item> mItems; private MyAdapter

我想从recyclerview中删除特定项(第一项!)

这不是问题:

//items variable is my Arraylist
items.remove(0);
当我看到这个项目时,它工作正常。但当我滚动时,recyclerview会自动更新,如果我滚动,则尝试删除该项目,而不是第一个项目(0)。在任何情况下删除第一项的代码是什么

谢谢大家!

private-List-mItems;
private List<Item> mItems;
private MyAdapter mAdapter;

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

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        return new ViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.cell, parent, false));
    }

    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        // ... On Bind
    }

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

    // View holder class to save view elements
    class ViewHolder extends RecyclerView.ViewHolder {
        // ...
        public ViewHolder(View itemView) {
            super(itemView);
            // ...
        }
    }
}

private void removeFirstItem() {
    mItems.remove(0);
    mAdapter.notifyDataSetChanged();
}
私用MyAdapter mAdapter; 公共类MyAdapter扩展了RecyclerView.Adapter{ @凌驾 public ViewHolder onCreateViewHolder(视图组父级,int-viewType){ 返回新的ViewHolder(LayoutInflater.from(parent.getContext()).flate(R.layout.cell,parent,false)); } @凌驾 公共无效onBindViewHolder(ViewHolder,int位置){ //…受束缚 } @凌驾 public int getItemCount(){ 返回mItems.size(); } //用于保存视图元素的视图保持器类 类ViewHolder扩展了RecyclerView.ViewHolder{ // ... 公共视图持有者(视图项视图){ 超级(项目视图); // ... } } } 私有void removeFirstItem(){ 去螨(0); mAdapter.notifyDataSetChanged(); }

或者使用
notifyItemRemoved(position)
以动画方式删除。

我想您可以阅读此问题的答案


此外,在创建“活动”之前,您不能调用
notifyItemRemoved
和其他notify方法,否则会出现错误“当RecyclerView正在计算布局或滚动时无法调用此方法”

您需要更新适配器中使用的arraylist,而且还需要刷新
RecyclerView
您能详细解释一下吗,如何做到这一点?检查我在删除项目时没有问题,问题是它不是正确的项目。当我滚动时,第一项不会是第一项。。如何告诉适配器我需要删除第一项?这不起作用。“当RecyclerView正在计算布局或滚动时无法调用此方法”您需要删除列表中的第一项或屏幕中的第一项?从列表中是扫描您在其中获得的代码“当RecyclerView正在计算布局或滚动时无法调用此方法”错误?这是您的removeFirstItem方法,但是,当我放入try-catch块时,它会工作,删除该项,而不是第一项;adapter类中的方法?将layoutManager保存为adapter的成员,这很难吗?