gpt4 book ai didi

java - 在android中删除一行后如何显示更新的数据库?

转载 作者:行者123 更新时间:2023-12-02 05:57:03 25 4
gpt4 key购买 nike

我想在单击该行后将其删除。它正在从数据库中删除该行,但更改不会立即显示在屏幕上。它会在关闭并重新打开应用程序后出现。
我已经使用了notifyDataSetChanged()。

MainActivity.java

@Override
protected void onStart() {
super.onStart();
display();
}

public void display(){
final DbHelper mDbHelper = new DbHelper(this);
SQLiteDatabase db = mDbHelper.getReadableDatabase();

Cursor cursor = db.rawQuery(" SELECT * FROM "+ Contract.Entry.TABLE_NAME, null);

ListView lv = (ListView)findViewById(R.id.tv);

final nCursorAdapter nc = new nCursorAdapter(this, cursor);
lv.setAdapter(nc);

lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
try {

SQLiteDatabase db = mDbHelper.getWritableDatabase();
db.delete(Contract.Entry.TABLE_NAME, Contract.Entry.COL_ID + " = ?",
new String[] { String.valueOf(id) });
db.close();

nc.notifyDataSetChanged();

}catch (Exception e){
Toast.makeText(getApplicationContext(),""+e, Toast.LENGTH_SHORT).show();
}
}
});
lv.invalidateViews();

}

nCursorAdapter.java

public class nCursorAdapter extends CursorAdapter {
public nCursorAdapter(Context context, Cursor c) {
super(context, c, 0);
}

@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
return LayoutInflater.from(context).inflate(R.layout.list, parent, false);
}

@Override
public void bindView(View view, Context context, Cursor cursor) {
TextView first_name = (TextView)view.findViewById(R.id.namef);
TextView last_name = (TextView)view.findViewById(R.id.namel);
TextView ph_num = (TextView)view.findViewById(R.id.number);

String fname = cursor.getString(cursor.getColumnIndex(Contract.Entry.COL_F_NAME));
String lname = cursor.getString(cursor.getColumnIndex(Contract.Entry.COL_L_NAME));
String phn = cursor.getString(cursor.getColumnIndex(Contract.Entry.COL_NUM));

first_name.setText(fname);
last_name.setText(lname);
ph_num.setText(phn);
}

}

最佳答案

此方法将重新加载Activity,没有任何闪烁或动画

private void refresh() {
Intent intent = getIntent();
overridePendingTransition(0, 0);
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
finish();
overridePendingTransition(0, 0);
startActivity(intent);
}

因此,删除该行后调用此方法。

关于java - 在android中删除一行后如何显示更新的数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56003096/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com