Android 按下“上一步”时如何刷新recylverview项目?

Android 按下“上一步”时如何刷新recylverview项目?,android,listview,android-recyclerview,android-sqlite,Android,Listview,Android Recyclerview,Android Sqlite,我想创建一个应用程序喜欢做的事情列表。因此创建了一个DatabaseHelper类。它包含DataAdd和DisplayData功能。MainActivity中存在用于查看所有存储数据的recyclerView对象。我的功能正在工作,但当我保存新数据并按下“后退”按钮时,它的保存但不会显示在recyclerView上。当我再次保存新数据时,它会显示出来。我想当我在onBackPressed中按Backpressed时可以刷新recylerview。我怎么做 package com.tcodi

我想创建一个应用程序喜欢做的事情列表。因此创建了一个
DatabaseHelper
类。它包含
DataAdd
DisplayData
功能。MainActivity中存在用于查看所有存储数据的recyclerView对象。我的功能正在工作,但当我保存新数据并按下“后退”按钮时,它的保存但不会显示在recyclerView上。当我再次保存新数据时,它会显示出来。我想当我在
onBackPressed
中按Backpressed时可以刷新recylerview。我怎么做

package com.tcoding.hangidersdenkacsorucozdum;
导入androidx.appcompat.app.appcompat活动;
导入androidx.recyclerview.widget.LinearLayoutManager;
导入androidx.recyclerview.widget.recyclerview;
导入android.content.Intent;
导入android.database.Cursor;
导入android.os.Bundle;
导入android.view.view;
导入android.widget.Toast;
导入com.google.android.material.floatingactionbutton.floatingactionbutton;
导入java.util.ArrayList;
公共类MainActivity扩展了AppCompatActivity{
私人回收车;
私有浮动操作按钮addButton;
数据库辅助数据库;
ArrayList lessonId,lessonName,lessonSubject,solvedProblemCount;
自定义适配器;
私有void init(){
rv=(RecyclerView)findViewById(R.id.rv);
addButton=(FloatingActionButton)findViewById(R.id.addButton);
db=新的DatabaseHelper(此);
lessonId=newarraylist();
lessonName=新建ArrayList();
lessonSubject=newarraylist();
solvedProblemCount=新ArrayList();
rv=findViewById(R.id.rv);
adapter=新的CustomAdapter(this、lessonId、lessonName、lessonSubject、solvedProblemCount);
rv.setLayoutManager(新直线布局经理(本));
rv.setEnabled(真);
rv.设置适配器(适配器);
}
@凌驾
public void onBackPressed(){
}
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
addButton.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
startActivity(新意图(MainActivity.this、AddActivity.class));
}
});
显示数据();
}
void DisplayData(){
游标c=db.showData();
如果(c.getCount()==0){
Toast.makeText(这个“Gösterilecek Veri bulumanadı…”,Toast.LENGTH_SHORT.show();
}否则{
while(c.moveToNext()){
添加(c.getString(0));
lessonName.add(c.getString(1));
增加(c.getString(2));
solvedProblemCount.add(c.getString(3));
}
}
}
}

保存数据后添加行

adapter.notifyDataSetChanged();
在MainActivity中添加此行

@Override
protected void onResume() {
    super.onResume();
    recyclerView.notify();
}

您需要在
onResume()
中再次获取数据,因为从
AddActivity
返回时不会调用
onCreate()

所以,要添加整个数据,您可以执行以下操作

@Override
protected void onResume() {
    super.onResume();
    DisplayData();
    adapter.notifyDataSetChanged();
}
或者,从性能角度来看,最好将最后插入的项通知数据库

@Override
protected void onResume() {
    super.onResume();
    Cursor c = db.showData();
    if(c.getCount() == 0){
        Toast.makeText(this, "Gösterilecek Veri Bulunamadı...", Toast.LENGTH_SHORT).show();
    } else {
        c.cursor.moveToLast()) 
        lessonId.add(c.getString(0));
        lessonName.add(c.getString(1));
        lessonSubject.add(c.getString(2));
        solvedProblemCount.add(c.getString(3));
    }
    adapter.notifyItemInserted(lessonId.getSize()-1);

}
@Override
protected void onResume() {
    super.onResume();
    Cursor c = db.showData();
    if(c.getCount() == 0){
        Toast.makeText(this, "Gösterilecek Veri Bulunamadı...", Toast.LENGTH_SHORT).show();
    } else {
        c.cursor.moveToLast()) 
        lessonId.add(c.getString(0));
        lessonName.add(c.getString(1));
        lessonSubject.add(c.getString(2));
        solvedProblemCount.add(c.getString(3));
    }
    adapter.notifyItemInserted(lessonId.getSize()-1);

}