1
我試圖從列表適配器中刪除一行listview,如果單擊一個按鈕,它將查找該id並將其發送到數據庫進行刪除。我寫的方法返回最後一個可用的id,而不是所選的一個。 這裏是清單適配器從Android中的SQLdatabase中刪除行通過id
public class HistoryAdapter extends ArrayAdapter<NassrahHelper> {
int ID;
public HistoryAdapter(@NonNull Context context, ArrayList<NassrahHelper> resource) {
super (context, R.layout.history_listadapter ,resource);
}
@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
LayoutInflater ListInflate = LayoutInflater.from(getContext());
ValuesHelper data = getItem(position);
View customView = ListInflate.inflate (R.layout.history_listadapter,parent,false);
ID = data.H_ID;
String first = data.Date;
TextView date = (TextView) customView.findViewById (R.id.DateText);
TextView DeleteBtn = (TextView) customView.findViewById(R.id.DeleteText);
DeleteBtn.setOnClickListener(
new View.OnClickListener() {
public void onClick(View view) {
DeleteRecord();
}
}
);
date.setText (first);
return customView;
}
private void DeleteRecord() {
DataBaseHelper dataBaseHelper = new DataBaseHelper(getContext());
dataBaseHelper.DeleteHistoryRow(ID);
dataBaseHelper.close();
}
這是數據庫類:
public boolean DeleteHistoryRow(int id) {
SQLiteDatabase database = this.getWritableDatabase();
database.delete (HISTORY_TABLE, "ID = ?", new String[]{String.valueOf(id)});
Log.w ("DELETE History", "DELTE Secssuffle");
database.close();
return true;
}
完美。但它給了我這個「變量」的位置「是從內部類訪問的,需要被聲明爲最終的」。所以你將不得不宣佈位置爲最後謝謝@ Chirag Raval –
如何清除刪除後清單,如果你知道我如何嘗試notifyDataSetChanged(); –
您還必須從列表中刪除已分配給列表視圖適配器的記錄。之後,你必須在適配器上調用notifyDataSetChanged方法。 –