Java 如何在android studio中添加简单的删除实现?似乎不可能

Java 如何在android studio中添加简单的删除实现?似乎不可能,java,android,android-studio,android-recyclerview,android-room,Java,Android,Android Studio,Android Recyclerview,Android Room,我已经研究了大约10天- 如何将一个类的实例从NotesAdapter引用到mainActivity中? 我应该这样做吗? 是否有一种方法可以从notes列表中获取最新条目,并将其作为参数传递给delete方法 谢谢大家! 主要活动: package edu.harvard.cs50.notes; import androidx.appcompat.app.AppCompatActivity; import androidx.recyclerview.widget.DefaultItemAni

我已经研究了大约10天- 如何将一个类的实例从NotesAdapter引用到mainActivity中? 我应该这样做吗? 是否有一种方法可以从notes列表中获取最新条目,并将其作为参数传递给delete方法

谢谢大家!

主要活动:

package edu.harvard.cs50.notes;

import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.DefaultItemAnimator;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.room.Room;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.android.material.snackbar.Snackbar;

public class MainActivity extends AppCompatActivity {
    private RecyclerView recyclerView;
    private RecyclerView.LayoutManager layoutManager;
    private NotesAdapter adapter;
    public static NotesDatabase database;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        database = Room
            .databaseBuilder(getApplicationContext(), NotesDatabase.class, "notes")
            .allowMainThreadQueries()
            .build();

        recyclerView = findViewById(R.id.recycler_view);
        layoutManager = new LinearLayoutManager(this);
        adapter = new NotesAdapter();
        // Note kkt = new notes(notes.size()-1);
        recyclerView.setLayoutManager(layoutManager);
        recyclerView.setAdapter(adapter);

        FloatingActionButton fab = findViewById(R.id.add_note_button);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                database.noteDao().create();
                adapter.reload();
            }
        });

        FloatingActionButton del = findViewById(R.id.delete_button);
        del.setOnClickListener(new View.OnClickListener() { // Gresit ca e null object reference
            @Override
            public void onClick(View view) {
                Toast.makeText(MainActivity.this, "Button clicked!!", Toast.LENGTH_SHORT).show();
                database.noteDao().deleteNote(database.noteDao().selectLast();
                NotesAdapter.deleteNode();
                // adapter.reload();
            }
        });
    }

    @Override
    protected void onResume() {
        super.onResume();
        adapter.reload();
    }

    public void delete(View view) {
        view = this.recyclerView;
        delete(recyclerView.findContainingItemView(view));

    }
}
package edu.harvard.cs50.notes;

import android.content.Context;
import android.content.Intent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.TextView;

import androidx.recyclerview.widget.RecyclerView;

import java.util.ArrayList;
import java.util.List;

import static edu.harvard.cs50.notes.MainActivity.database;

public class NotesAdapter extends RecyclerView.Adapter<NotesAdapter.NoteViewHolder> {
    public static class NoteViewHolder extends RecyclerView.ViewHolder {
        public LinearLayout containerView;
        public TextView nameTextView;

        public NoteViewHolder(View view) {
            super(view);
            this.containerView = view.findViewById(R.id.note_row);
            this.nameTextView = view.findViewById(R.id.note_row_name);

            this.containerView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Context context = v.getContext();
                    Note note = (Note) containerView.getTag();
                    Intent intent = new Intent(v.getContext(), NoteActivity.class);
                    intent.putExtra("id", note.id);
                    intent.putExtra("content", note.content);

                    context.startActivity(intent);
                }
            });
        }
    }

    public List<Note> notes = new ArrayList<>();

    @Override
    public NoteViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.note_row, parent, false);

        return new NoteViewHolder(view);
    }

    @Override
    public void onBindViewHolder(NoteViewHolder holder, int position) {
        Note current = notes.get(position);
        holder.containerView.setTag(current);
        holder.nameTextView.setText(current.content);
    }

    @Override
    public int getItemCount() {
       // kkt = notes.get(notes.size()- 1);
        return notes.size();
    }


    public void reload() {
        notes = database.noteDao().getAll();
        notifyDataSetChanged();
    }

    public void deleteNode(){
        Note kkt = notes.get(notes.size() - 1);
        database.noteDao().deleteNote(kkt);
    }
}

public void deleteNode(){

    //the last note
    Note kkt = notes.get(notes.size() - 1);

    //remove from database
    database.noteDao().deleteNote(kkt);

    //remove from list
    notes.remove(notes.size() - 1);

    //refresh 
    notifyDataSetChanged();

}
    del.setOnClickListener(new View.OnClickListener() { // Gresit ca e null object reference
        @Override
        public void onClick(View view) {
            Toast.makeText(MainActivity.this, "Button clicked!!", Toast.LENGTH_SHORT).show();
            database.noteDao().deleteNote(database.noteDao().selectLast();
            NotesAdapter.deleteNode();
            // adapter.reload();
        }
    });
    del.setOnClickListener(new View.OnClickListener() { // Gresit ca e null object reference
        @Override
        public void onClick(View view) {
            Toast.makeText(MainActivity.this, "Button clicked!!", Toast.LENGTH_SHORT).show();

            //call like this
            adapter.deleteNode();

        }
    });
注:附录:

package edu.harvard.cs50.notes;

import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.DefaultItemAnimator;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.room.Room;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.android.material.snackbar.Snackbar;

public class MainActivity extends AppCompatActivity {
    private RecyclerView recyclerView;
    private RecyclerView.LayoutManager layoutManager;
    private NotesAdapter adapter;
    public static NotesDatabase database;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        database = Room
            .databaseBuilder(getApplicationContext(), NotesDatabase.class, "notes")
            .allowMainThreadQueries()
            .build();

        recyclerView = findViewById(R.id.recycler_view);
        layoutManager = new LinearLayoutManager(this);
        adapter = new NotesAdapter();
        // Note kkt = new notes(notes.size()-1);
        recyclerView.setLayoutManager(layoutManager);
        recyclerView.setAdapter(adapter);

        FloatingActionButton fab = findViewById(R.id.add_note_button);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                database.noteDao().create();
                adapter.reload();
            }
        });

        FloatingActionButton del = findViewById(R.id.delete_button);
        del.setOnClickListener(new View.OnClickListener() { // Gresit ca e null object reference
            @Override
            public void onClick(View view) {
                Toast.makeText(MainActivity.this, "Button clicked!!", Toast.LENGTH_SHORT).show();
                database.noteDao().deleteNote(database.noteDao().selectLast();
                NotesAdapter.deleteNode();
                // adapter.reload();
            }
        });
    }

    @Override
    protected void onResume() {
        super.onResume();
        adapter.reload();
    }

    public void delete(View view) {
        view = this.recyclerView;
        delete(recyclerView.findContainingItemView(view));

    }
}
package edu.harvard.cs50.notes;

import android.content.Context;
import android.content.Intent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.TextView;

import androidx.recyclerview.widget.RecyclerView;

import java.util.ArrayList;
import java.util.List;

import static edu.harvard.cs50.notes.MainActivity.database;

public class NotesAdapter extends RecyclerView.Adapter<NotesAdapter.NoteViewHolder> {
    public static class NoteViewHolder extends RecyclerView.ViewHolder {
        public LinearLayout containerView;
        public TextView nameTextView;

        public NoteViewHolder(View view) {
            super(view);
            this.containerView = view.findViewById(R.id.note_row);
            this.nameTextView = view.findViewById(R.id.note_row_name);

            this.containerView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Context context = v.getContext();
                    Note note = (Note) containerView.getTag();
                    Intent intent = new Intent(v.getContext(), NoteActivity.class);
                    intent.putExtra("id", note.id);
                    intent.putExtra("content", note.content);

                    context.startActivity(intent);
                }
            });
        }
    }

    public List<Note> notes = new ArrayList<>();

    @Override
    public NoteViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.note_row, parent, false);

        return new NoteViewHolder(view);
    }

    @Override
    public void onBindViewHolder(NoteViewHolder holder, int position) {
        Note current = notes.get(position);
        holder.containerView.setTag(current);
        holder.nameTextView.setText(current.content);
    }

    @Override
    public int getItemCount() {
       // kkt = notes.get(notes.size()- 1);
        return notes.size();
    }


    public void reload() {
        notes = database.noteDao().getAll();
        notifyDataSetChanged();
    }

    public void deleteNode(){
        Note kkt = notes.get(notes.size() - 1);
        database.noteDao().deleteNote(kkt);
    }
}

public void deleteNode(){

    //the last note
    Note kkt = notes.get(notes.size() - 1);

    //remove from database
    database.noteDao().deleteNote(kkt);

    //remove from list
    notes.remove(notes.size() - 1);

    //refresh 
    notifyDataSetChanged();

}
    del.setOnClickListener(new View.OnClickListener() { // Gresit ca e null object reference
        @Override
        public void onClick(View view) {
            Toast.makeText(MainActivity.this, "Button clicked!!", Toast.LENGTH_SHORT).show();
            database.noteDao().deleteNote(database.noteDao().selectLast();
            NotesAdapter.deleteNode();
            // adapter.reload();
        }
    });
    del.setOnClickListener(new View.OnClickListener() { // Gresit ca e null object reference
        @Override
        public void onClick(View view) {
            Toast.makeText(MainActivity.this, "Button clicked!!", Toast.LENGTH_SHORT).show();

            //call like this
            adapter.deleteNode();

        }
    });

如果您的数据库工作正常,并且正在加载notes,那么您在deleteNode中丢失了一些内容,这将从列表中删除该项:

package edu.harvard.cs50.notes;

import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.DefaultItemAnimator;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.room.Room;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.android.material.snackbar.Snackbar;

public class MainActivity extends AppCompatActivity {
    private RecyclerView recyclerView;
    private RecyclerView.LayoutManager layoutManager;
    private NotesAdapter adapter;
    public static NotesDatabase database;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        database = Room
            .databaseBuilder(getApplicationContext(), NotesDatabase.class, "notes")
            .allowMainThreadQueries()
            .build();

        recyclerView = findViewById(R.id.recycler_view);
        layoutManager = new LinearLayoutManager(this);
        adapter = new NotesAdapter();
        // Note kkt = new notes(notes.size()-1);
        recyclerView.setLayoutManager(layoutManager);
        recyclerView.setAdapter(adapter);

        FloatingActionButton fab = findViewById(R.id.add_note_button);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                database.noteDao().create();
                adapter.reload();
            }
        });

        FloatingActionButton del = findViewById(R.id.delete_button);
        del.setOnClickListener(new View.OnClickListener() { // Gresit ca e null object reference
            @Override
            public void onClick(View view) {
                Toast.makeText(MainActivity.this, "Button clicked!!", Toast.LENGTH_SHORT).show();
                database.noteDao().deleteNote(database.noteDao().selectLast();
                NotesAdapter.deleteNode();
                // adapter.reload();
            }
        });
    }

    @Override
    protected void onResume() {
        super.onResume();
        adapter.reload();
    }

    public void delete(View view) {
        view = this.recyclerView;
        delete(recyclerView.findContainingItemView(view));

    }
}
package edu.harvard.cs50.notes;

import android.content.Context;
import android.content.Intent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.TextView;

import androidx.recyclerview.widget.RecyclerView;

import java.util.ArrayList;
import java.util.List;

import static edu.harvard.cs50.notes.MainActivity.database;

public class NotesAdapter extends RecyclerView.Adapter<NotesAdapter.NoteViewHolder> {
    public static class NoteViewHolder extends RecyclerView.ViewHolder {
        public LinearLayout containerView;
        public TextView nameTextView;

        public NoteViewHolder(View view) {
            super(view);
            this.containerView = view.findViewById(R.id.note_row);
            this.nameTextView = view.findViewById(R.id.note_row_name);

            this.containerView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Context context = v.getContext();
                    Note note = (Note) containerView.getTag();
                    Intent intent = new Intent(v.getContext(), NoteActivity.class);
                    intent.putExtra("id", note.id);
                    intent.putExtra("content", note.content);

                    context.startActivity(intent);
                }
            });
        }
    }

    public List<Note> notes = new ArrayList<>();

    @Override
    public NoteViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.note_row, parent, false);

        return new NoteViewHolder(view);
    }

    @Override
    public void onBindViewHolder(NoteViewHolder holder, int position) {
        Note current = notes.get(position);
        holder.containerView.setTag(current);
        holder.nameTextView.setText(current.content);
    }

    @Override
    public int getItemCount() {
       // kkt = notes.get(notes.size()- 1);
        return notes.size();
    }


    public void reload() {
        notes = database.noteDao().getAll();
        notifyDataSetChanged();
    }

    public void deleteNode(){
        Note kkt = notes.get(notes.size() - 1);
        database.noteDao().deleteNote(kkt);
    }
}

public void deleteNode(){

    //the last note
    Note kkt = notes.get(notes.size() - 1);

    //remove from database
    database.noteDao().deleteNote(kkt);

    //remove from list
    notes.remove(notes.size() - 1);

    //refresh 
    notifyDataSetChanged();

}
    del.setOnClickListener(new View.OnClickListener() { // Gresit ca e null object reference
        @Override
        public void onClick(View view) {
            Toast.makeText(MainActivity.this, "Button clicked!!", Toast.LENGTH_SHORT).show();
            database.noteDao().deleteNote(database.noteDao().selectLast();
            NotesAdapter.deleteNode();
            // adapter.reload();
        }
    });
    del.setOnClickListener(new View.OnClickListener() { // Gresit ca e null object reference
        @Override
        public void onClick(View view) {
            Toast.makeText(MainActivity.this, "Button clicked!!", Toast.LENGTH_SHORT).show();

            //call like this
            adapter.deleteNode();

        }
    });
notesdapter

package edu.harvard.cs50.notes;

import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.DefaultItemAnimator;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.room.Room;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.android.material.snackbar.Snackbar;

public class MainActivity extends AppCompatActivity {
    private RecyclerView recyclerView;
    private RecyclerView.LayoutManager layoutManager;
    private NotesAdapter adapter;
    public static NotesDatabase database;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        database = Room
            .databaseBuilder(getApplicationContext(), NotesDatabase.class, "notes")
            .allowMainThreadQueries()
            .build();

        recyclerView = findViewById(R.id.recycler_view);
        layoutManager = new LinearLayoutManager(this);
        adapter = new NotesAdapter();
        // Note kkt = new notes(notes.size()-1);
        recyclerView.setLayoutManager(layoutManager);
        recyclerView.setAdapter(adapter);

        FloatingActionButton fab = findViewById(R.id.add_note_button);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                database.noteDao().create();
                adapter.reload();
            }
        });

        FloatingActionButton del = findViewById(R.id.delete_button);
        del.setOnClickListener(new View.OnClickListener() { // Gresit ca e null object reference
            @Override
            public void onClick(View view) {
                Toast.makeText(MainActivity.this, "Button clicked!!", Toast.LENGTH_SHORT).show();
                database.noteDao().deleteNote(database.noteDao().selectLast();
                NotesAdapter.deleteNode();
                // adapter.reload();
            }
        });
    }

    @Override
    protected void onResume() {
        super.onResume();
        adapter.reload();
    }

    public void delete(View view) {
        view = this.recyclerView;
        delete(recyclerView.findContainingItemView(view));

    }
}
package edu.harvard.cs50.notes;

import android.content.Context;
import android.content.Intent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.TextView;

import androidx.recyclerview.widget.RecyclerView;

import java.util.ArrayList;
import java.util.List;

import static edu.harvard.cs50.notes.MainActivity.database;

public class NotesAdapter extends RecyclerView.Adapter<NotesAdapter.NoteViewHolder> {
    public static class NoteViewHolder extends RecyclerView.ViewHolder {
        public LinearLayout containerView;
        public TextView nameTextView;

        public NoteViewHolder(View view) {
            super(view);
            this.containerView = view.findViewById(R.id.note_row);
            this.nameTextView = view.findViewById(R.id.note_row_name);

            this.containerView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Context context = v.getContext();
                    Note note = (Note) containerView.getTag();
                    Intent intent = new Intent(v.getContext(), NoteActivity.class);
                    intent.putExtra("id", note.id);
                    intent.putExtra("content", note.content);

                    context.startActivity(intent);
                }
            });
        }
    }

    public List<Note> notes = new ArrayList<>();

    @Override
    public NoteViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.note_row, parent, false);

        return new NoteViewHolder(view);
    }

    @Override
    public void onBindViewHolder(NoteViewHolder holder, int position) {
        Note current = notes.get(position);
        holder.containerView.setTag(current);
        holder.nameTextView.setText(current.content);
    }

    @Override
    public int getItemCount() {
       // kkt = notes.get(notes.size()- 1);
        return notes.size();
    }


    public void reload() {
        notes = database.noteDao().getAll();
        notifyDataSetChanged();
    }

    public void deleteNode(){
        Note kkt = notes.get(notes.size() - 1);
        database.noteDao().deleteNote(kkt);
    }
}

public void deleteNode(){

    //the last note
    Note kkt = notes.get(notes.size() - 1);

    //remove from database
    database.noteDao().deleteNote(kkt);

    //remove from list
    notes.remove(notes.size() - 1);

    //refresh 
    notifyDataSetChanged();

}
    del.setOnClickListener(new View.OnClickListener() { // Gresit ca e null object reference
        @Override
        public void onClick(View view) {
            Toast.makeText(MainActivity.this, "Button clicked!!", Toast.LENGTH_SHORT).show();
            database.noteDao().deleteNote(database.noteDao().selectLast();
            NotesAdapter.deleteNode();
            // adapter.reload();
        }
    });
    del.setOnClickListener(new View.OnClickListener() { // Gresit ca e null object reference
        @Override
        public void onClick(View view) {
            Toast.makeText(MainActivity.this, "Button clicked!!", Toast.LENGTH_SHORT).show();

            //call like this
            adapter.deleteNode();

        }
    });
MainActivity

package edu.harvard.cs50.notes;

import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.DefaultItemAnimator;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.room.Room;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.android.material.snackbar.Snackbar;

public class MainActivity extends AppCompatActivity {
    private RecyclerView recyclerView;
    private RecyclerView.LayoutManager layoutManager;
    private NotesAdapter adapter;
    public static NotesDatabase database;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        database = Room
            .databaseBuilder(getApplicationContext(), NotesDatabase.class, "notes")
            .allowMainThreadQueries()
            .build();

        recyclerView = findViewById(R.id.recycler_view);
        layoutManager = new LinearLayoutManager(this);
        adapter = new NotesAdapter();
        // Note kkt = new notes(notes.size()-1);
        recyclerView.setLayoutManager(layoutManager);
        recyclerView.setAdapter(adapter);

        FloatingActionButton fab = findViewById(R.id.add_note_button);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                database.noteDao().create();
                adapter.reload();
            }
        });

        FloatingActionButton del = findViewById(R.id.delete_button);
        del.setOnClickListener(new View.OnClickListener() { // Gresit ca e null object reference
            @Override
            public void onClick(View view) {
                Toast.makeText(MainActivity.this, "Button clicked!!", Toast.LENGTH_SHORT).show();
                database.noteDao().deleteNote(database.noteDao().selectLast();
                NotesAdapter.deleteNode();
                // adapter.reload();
            }
        });
    }

    @Override
    protected void onResume() {
        super.onResume();
        adapter.reload();
    }

    public void delete(View view) {
        view = this.recyclerView;
        delete(recyclerView.findContainingItemView(view));

    }
}
package edu.harvard.cs50.notes;

import android.content.Context;
import android.content.Intent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.TextView;

import androidx.recyclerview.widget.RecyclerView;

import java.util.ArrayList;
import java.util.List;

import static edu.harvard.cs50.notes.MainActivity.database;

public class NotesAdapter extends RecyclerView.Adapter<NotesAdapter.NoteViewHolder> {
    public static class NoteViewHolder extends RecyclerView.ViewHolder {
        public LinearLayout containerView;
        public TextView nameTextView;

        public NoteViewHolder(View view) {
            super(view);
            this.containerView = view.findViewById(R.id.note_row);
            this.nameTextView = view.findViewById(R.id.note_row_name);

            this.containerView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Context context = v.getContext();
                    Note note = (Note) containerView.getTag();
                    Intent intent = new Intent(v.getContext(), NoteActivity.class);
                    intent.putExtra("id", note.id);
                    intent.putExtra("content", note.content);

                    context.startActivity(intent);
                }
            });
        }
    }

    public List<Note> notes = new ArrayList<>();

    @Override
    public NoteViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.note_row, parent, false);

        return new NoteViewHolder(view);
    }

    @Override
    public void onBindViewHolder(NoteViewHolder holder, int position) {
        Note current = notes.get(position);
        holder.containerView.setTag(current);
        holder.nameTextView.setText(current.content);
    }

    @Override
    public int getItemCount() {
       // kkt = notes.get(notes.size()- 1);
        return notes.size();
    }


    public void reload() {
        notes = database.noteDao().getAll();
        notifyDataSetChanged();
    }

    public void deleteNode(){
        Note kkt = notes.get(notes.size() - 1);
        database.noteDao().deleteNote(kkt);
    }
}

public void deleteNode(){

    //the last note
    Note kkt = notes.get(notes.size() - 1);

    //remove from database
    database.noteDao().deleteNote(kkt);

    //remove from list
    notes.remove(notes.size() - 1);

    //refresh 
    notifyDataSetChanged();

}
    del.setOnClickListener(new View.OnClickListener() { // Gresit ca e null object reference
        @Override
        public void onClick(View view) {
            Toast.makeText(MainActivity.this, "Button clicked!!", Toast.LENGTH_SHORT).show();
            database.noteDao().deleteNote(database.noteDao().selectLast();
            NotesAdapter.deleteNode();
            // adapter.reload();
        }
    });
    del.setOnClickListener(new View.OnClickListener() { // Gresit ca e null object reference
        @Override
        public void onClick(View view) {
            Toast.makeText(MainActivity.this, "Button clicked!!", Toast.LENGTH_SHORT).show();

            //call like this
            adapter.deleteNode();

        }
    });
而是这样做:

package edu.harvard.cs50.notes;

import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.DefaultItemAnimator;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.room.Room;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.android.material.snackbar.Snackbar;

public class MainActivity extends AppCompatActivity {
    private RecyclerView recyclerView;
    private RecyclerView.LayoutManager layoutManager;
    private NotesAdapter adapter;
    public static NotesDatabase database;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        database = Room
            .databaseBuilder(getApplicationContext(), NotesDatabase.class, "notes")
            .allowMainThreadQueries()
            .build();

        recyclerView = findViewById(R.id.recycler_view);
        layoutManager = new LinearLayoutManager(this);
        adapter = new NotesAdapter();
        // Note kkt = new notes(notes.size()-1);
        recyclerView.setLayoutManager(layoutManager);
        recyclerView.setAdapter(adapter);

        FloatingActionButton fab = findViewById(R.id.add_note_button);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                database.noteDao().create();
                adapter.reload();
            }
        });

        FloatingActionButton del = findViewById(R.id.delete_button);
        del.setOnClickListener(new View.OnClickListener() { // Gresit ca e null object reference
            @Override
            public void onClick(View view) {
                Toast.makeText(MainActivity.this, "Button clicked!!", Toast.LENGTH_SHORT).show();
                database.noteDao().deleteNote(database.noteDao().selectLast();
                NotesAdapter.deleteNode();
                // adapter.reload();
            }
        });
    }

    @Override
    protected void onResume() {
        super.onResume();
        adapter.reload();
    }

    public void delete(View view) {
        view = this.recyclerView;
        delete(recyclerView.findContainingItemView(view));

    }
}
package edu.harvard.cs50.notes;

import android.content.Context;
import android.content.Intent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.TextView;

import androidx.recyclerview.widget.RecyclerView;

import java.util.ArrayList;
import java.util.List;

import static edu.harvard.cs50.notes.MainActivity.database;

public class NotesAdapter extends RecyclerView.Adapter<NotesAdapter.NoteViewHolder> {
    public static class NoteViewHolder extends RecyclerView.ViewHolder {
        public LinearLayout containerView;
        public TextView nameTextView;

        public NoteViewHolder(View view) {
            super(view);
            this.containerView = view.findViewById(R.id.note_row);
            this.nameTextView = view.findViewById(R.id.note_row_name);

            this.containerView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Context context = v.getContext();
                    Note note = (Note) containerView.getTag();
                    Intent intent = new Intent(v.getContext(), NoteActivity.class);
                    intent.putExtra("id", note.id);
                    intent.putExtra("content", note.content);

                    context.startActivity(intent);
                }
            });
        }
    }

    public List<Note> notes = new ArrayList<>();

    @Override
    public NoteViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.note_row, parent, false);

        return new NoteViewHolder(view);
    }

    @Override
    public void onBindViewHolder(NoteViewHolder holder, int position) {
        Note current = notes.get(position);
        holder.containerView.setTag(current);
        holder.nameTextView.setText(current.content);
    }

    @Override
    public int getItemCount() {
       // kkt = notes.get(notes.size()- 1);
        return notes.size();
    }


    public void reload() {
        notes = database.noteDao().getAll();
        notifyDataSetChanged();
    }

    public void deleteNode(){
        Note kkt = notes.get(notes.size() - 1);
        database.noteDao().deleteNote(kkt);
    }
}

public void deleteNode(){

    //the last note
    Note kkt = notes.get(notes.size() - 1);

    //remove from database
    database.noteDao().deleteNote(kkt);

    //remove from list
    notes.remove(notes.size() - 1);

    //refresh 
    notifyDataSetChanged();

}
    del.setOnClickListener(new View.OnClickListener() { // Gresit ca e null object reference
        @Override
        public void onClick(View view) {
            Toast.makeText(MainActivity.this, "Button clicked!!", Toast.LENGTH_SHORT).show();
            database.noteDao().deleteNote(database.noteDao().selectLast();
            NotesAdapter.deleteNode();
            // adapter.reload();
        }
    });
    del.setOnClickListener(new View.OnClickListener() { // Gresit ca e null object reference
        @Override
        public void onClick(View view) {
            Toast.makeText(MainActivity.this, "Button clicked!!", Toast.LENGTH_SHORT).show();

            //call like this
            adapter.deleteNode();

        }
    });

我是一个初学者,忽略了“adapter=newnotesadapter();”你真的帮了我很大的忙!