我有一个删除所有按钮,每次删除列表视图中的所有项目时,列表视图都不会在路上但保持不变,只有在我创建新项目或重新启动此活动时才会重新加载。我在我的代码上打印了一个日志,看起来列表视图在调用delete方法之前重新加载。我的代码是这样的:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
DBHelper db = new DBHelper(this);
final ListView listView = (ListView) findViewById(R.id.listView);
TextView empty = (TextView) findViewById(R.id.empty);
ArrayList<Inventory> listArray = new ArrayList<>();
listArray.clear();
listArray = db.read();
if (listArray.size() == 0) {
empty.setText("No Items");
} else {
empty.setText("");
}
ListViewAdapter customAdapter = new ListViewAdapter(listArray);
customAdapter.notifyDataSetChanged();
listView.setAdapter(customAdapter);
Button add_button = (Button) findViewById(R.id.button);
add_button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
addNewItem(view);
}
});
Button button_deleteAll = (Button) findViewById(R.id.button_deleteAll);
button_deleteAll.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
deteleAll();
DBHelper db = new DBHelper(MainActivity.this);
final ListView listView = (ListView) findViewById(R.id.listView);
TextView empty = (TextView) findViewById(R.id.empty);
ArrayList<Inventory> listArray = new ArrayList<>();
listArray.clear();
listArray = db.read();
Log.v("arraysize:", String.valueOf(listArray.size()));
if (listArray.size() == 0) {
empty.setText("No Items");
} else {
empty.setText("");
}
ListViewAdapter customAdapter = new ListViewAdapter(listArray);
customAdapter.notifyDataSetChanged();
listView.setAdapter(customAdapter);
}
});
}
方法deleteAll()删除SQLite中的所有数据。 我希望知道如何在调用此方法后重新加载listview,而不是在此方法之前重新加载。
答案 0 :(得分:0)
我想没有必要在按钮OnClick方法中再次初始化customAdapter。也不需要再次setAdapter。
尝试在onClick方法中删除这些行。
希望这可以解决您的问题。
答案 1 :(得分:0)
在适配器中添加delete all方法。单击按钮时调用适配器的deleteAll方法。 deleteAll方法如下所示:
public void setListArray(ArrayList arrayList)
{
//assuming your adapter list is named "listArray"
this.listArray = arrayList;
notifyDataSetChanged();
}
并点击按钮,只需编写此代码:
button_deleteAll.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//assuming your list of itames here is named "mListArray"
mListArray.clear();
adapter.setListArray(mListArray);
}
}
答案 2 :(得分:0)
只需将 myListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override public void onItemClick(AdapterView<?> parent, android.view.View view, int position, long id) {
myArrayList.remove(position);
myArrayAdapter.notifyDataSetChanged();
}
});
添加到您的适配器,在监听器内。例如:
{{1}}