Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.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_Nullpointerexception_Android Adapter - Fatal编程技术网

Android 滑动以删除Recyclerview会导致空对象引用错误

Android 滑动以删除Recyclerview会导致空对象引用错误,android,android-recyclerview,nullpointerexception,android-adapter,Android,Android Recyclerview,Nullpointerexception,Android Adapter,我正在使用一个recyclerview,并正在实现“刷卡删除”。代码运行得很好,但是当我尝试从适配器获取列表以便实现swipe-to-delete时,我得到了一个空对象引用。 下面是我的适配器类 public class TlAdapter extends RecyclerView.Adapter<TimelineVholder> { private List<FetchModel> models; private Context context; public Tl

我正在使用一个recyclerview,并正在实现“刷卡删除”。代码运行得很好,但是当我尝试从适配器获取列表以便实现swipe-to-delete时,我得到了一个空对象引用。 下面是我的适配器类

public class TlAdapter extends RecyclerView.Adapter<TimelineVholder> {
private List<FetchModel> models;
private Context context;


public TlAdapter(List<FetchModel> models,Context context) {
    this.models = models;
    this.context= context;
}

@NonNull
@Override
public TimelineVholder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

    View view= LayoutInflater.from(context).inflate(R.layout.timeline,parent,false);

   return new TimelineVholder(view,viewType);
}

@Override
public void onBindViewHolder(@NonNull TimelineVholder holder, final int position) {
    SharedPreferences preferences= PreferenceManager.getDefaultSharedPreferences(context);
    final SharedPreferences.Editor editor=preferences.edit();

        FetchModel list= models.get(position);

        String activity= list.getJournalEntry();
        String time= list.getTime();

        holder.activity.setText(activity);
        holder.time.setText(time);
 }

@Override
public int getItemViewType(int position) {
    return TimelineView.getTimeLineViewType(position,getItemCount());
}
@Override
public int getItemCount() {

    int arr=0;
    try {
        if (models.size()==0){
            arr=0;
        }
        else {
            arr=models.size();
        }
    }
    catch (Exception e){}
    return arr;
}

public List<FetchModel> getkey(){
    return models;
}

我在这里也遇到了许多类似的问题,并尝试了建议的方法,但我找不到一个能帮我解决问题的方法。我甚至试图重新填充列表,但它甚至给我带来了另一个错误。我非常感谢任何可能的帮助。谢谢。

您尚未初始化
模型列表。因此,在RecycleServiceWBasic的构造函数中再接受一个参数并初始化列表

请发布您的完整日志。已发布请检查这不是完整的日志。将出现一行消息“由…引起”,我已经这样做了,错误仍然存在。因此每次调用
onsweep
时,都会创建一个新的适配器对象,但情况不应该是这样。适配器应该只有一个对象。您可以在将适配器与recycler视图绑定的位置创建适配器的对象,并将该对象作为另一个参数传递给RecyclerViewBasic的构造函数。
public class RecyclerViewBasic  {
private Context context;
private List<FetchModel> modelList;
public RecyclerViewBasic(Context context) {
    this.context = context;
}
public void recyclerGesture(){
    new ItemTouchHelper(new ItemTouchHelper.SimpleCallback(0,
            ItemTouchHelper.RIGHT|ItemTouchHelper.LEFT) {
        @Override
        public boolean onMove(RecyclerView recyclerView, 
RecyclerView.ViewHolder
                viewHolder, RecyclerView.ViewHolder target) {
            return false;
        }

        @Override
        public void onSwiped(RecyclerView.ViewHolder viewHolder, int 
direction) {
            int position= viewHolder.getAdapterPosition();

            TlAdapter adapter= new TlAdapter(modelList,context);

            modelList= adapter.getkey();
            modelList.remove(position);
            adapter.notifyDataSetChanged();

        }
    }).attachToRecyclerView(recyclerView);

}
06-29 13:19:41.691 4282-4282/com.revosleap.journal E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.revosleap.journal, PID: 4282
java.lang.NullPointerException: Attempt to invoke interface method 'java.lang.Object java.util.List.remove(int)' on a null object reference
    at com.revosleap.journal.RecyclerUtils.RecyclerView.RecyclerViewBasic$2.onSwiped(RecyclerViewBasic.java:89)
    at android.support.v7.widget.helper.ItemTouchHelper$4.run(ItemTouchHelper.java:692)
    at android.os.Handler.handleCallback(Handler.java:739)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:145)
    at android.app.ActivityThread.main(ActivityThread.java:5942)
    at java.lang.reflect.Method.invoke(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:372)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)