【发布时间】:2022-01-30 21:57:03
【问题描述】:
我想了解如何在我的 MainActivity 中正确使用 notifyDataSetChanged()。 我希望它在从用户获取联系信息的对话框片段关闭后立即启动。
我将它添加到 storeDataInArrays() 的末尾,以便在添加新联系人时更新列表,但目前它不执行任何操作。
我在 logcat 中也没有收到任何错误,所以我不知道我做错了什么。
这是主要活动
public class MainActivity extends AppCompatActivity {
private static final String TAG = "MainActivity";
//widgets
public ImageButton eAddContact;
RecyclerView recyclerView;
DatabaseHelper myDB;
ArrayList<String>Contact_id,Contact_Name,Contact_Number;
CustomAdapter customAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
eAddContact = findViewById(R.id.btnAddContact);
eAddContact.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.d(TAG,"onClick:opening dialog");
Dialog_AddContact dialog = new Dialog_AddContact();
dialog.show(getSupportFragmentManager(),"Add Contact Dialog");
}
});
//Toast.makeText(getApplicationContext(),"@#",Toast.LENGTH_SHORT).show();
myDB = new DatabaseHelper(MainActivity.this);
Contact_id = new ArrayList<>();
Contact_Name = new ArrayList<>();
Contact_Number = new ArrayList<>();
storeDataInArrays();
recyclerView = findViewById(R.id.RecyclerView);
customAdapter= new CustomAdapter(MainActivity.this,Contact_id,Contact_Name,Contact_Number);
recyclerView.setAdapter(customAdapter);
recyclerView.setLayoutManager(new LinearLayoutManager(MainActivity.this));
}
void storeDataInArrays(){
Cursor cursor = myDB.getEveryone();
if(cursor.getCount()==0){
//Add blank page
}
else{
while (cursor.moveToNext()){
Contact_id.add(cursor.getString(0));
Contact_Name.add(cursor.getString(1));
Contact_Number.add(cursor.getString(2));
}
}
customAdapter= new CustomAdapter(MainActivity.this,Contact_id,Contact_Name,Contact_Number);
customAdapter.notifyDataSetChanged();
}
}
在这方面的任何和所有帮助都将不胜感激。
【问题讨论】:
标签: java android android-studio android-recyclerview adapter