Java 如何在android studio中添加简单的删除实现?似乎不可能
我已经研究了大约10天- 如何将一个类的实例从NotesAdapter引用到mainActivity中? 我应该这样做吗? 是否有一种方法可以从notes列表中获取最新条目,并将其作为参数传递给delete方法 谢谢大家! 主要活动: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
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();”你真的帮了我很大的忙!