목록에서 클릭 한 항목을 ListView (및 DB에서도 삭제해야합니다.ListView에서 삭제 버튼을 클릭하여 항목 삭제
이 작업을 수행하려면 문맥 메뉴를 사용하지 않지만이 어댑터의 "row.xml"에 사용자 지정 어댑터 (두 개의 단추 "삭제"및 "편집")가 있습니다.
그래서 ListView 및 DB에서 선택한 항목을 어떻게 삭제할 수 있습니까?
... with setTag() 클릭 한 요소의 ID를 상대 버튼으로 설정하고?
어떻게 데이터베이스에서 제거 할 수 있습니까?
이
내 어댑터입니다 : 리스너 (crudListeners)에서 OnClickListener를에서package com.prendonota;
import java.util.List;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageButton;
import android.widget.TextView;
import android.widget.Toast;
import com.prendonota.activeRecord.Nota;
public class ListaNotaAdapter extends ArrayAdapter<Nota> {
public Nota nota;
public OnClickListener crudListeners;
/**
* Costruttore ereditato
* @param context
* @param textViewResourceId
* @param objects
*/
public ListaNotaAdapter(Context context, int textViewResourceId, List<Nota> objects) {
super(context, textViewResourceId, objects);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = null;
final View delete;
final View edit;
//*** prima di tutto è necessario crearsi un oggetto inflater che
//*** intrinsecamente associ il contesto attuale su cui si sta agendo
//*** e il servizio che si è richiesto "layout_inflater"
LayoutInflater inflater = (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
//*** una volta che ho l'oggetto inflater che associa contesto+servizio posso procedere
//*** nell'identificazione dell'xml da usare
row = inflater.inflate(R.layout.row, null);
//*** una volta che ho la vista relativa al contesto attuale e relativa all'xml desiderato per layout
//*** mi richiamo i propri elementi interni a cui associare i dati dell'oggetto item di turno
TextView data = (TextView)row.findViewById(R.id.item_data);
TextView oggetto = (TextView)row.findViewById(R.id.item_oggetto);
delete = (ImageButton)row.findViewById(R.id.button_row_delete);
edit = (ImageButton)row.findViewById(R.id.button_row_edit);
//*** prende l'oggetto nell'array "Nota[] objects" passato in argomento
//*** dato il proprio indice di posizione
nota = getItem(position);
//**** in fine associo agli appositi oggetti "TextView" i rispettivi valori
data.setText(nota.get_dataInserimentoModifica());
oggetto.setText(nota.get_oggetto());
//*** poi associo i tag ai relativi pulsanti "Delete" e "Edit"
delete.setTag(nota.get_id());
edit.setTag(nota.get_id());
//*** assegnazione dei listeners ai rispettivi pulsanti
delete.setOnClickListener(crudListeners);
edit.setOnClickListener(crudListeners);
//*** inizializzo la variabile crudListeners che gestisce i listeners sui pulsanti
crudListeners = new OnClickListener() {
@Override
public void onClick(View v) {
int idnota = (Integer)v.getTag();
StringBuilder msg = new StringBuilder("ID nota ").append(idnota);
if(v.getId()==delete.getId()){
msg.append(" DELETE");
}else{
msg.append(" EDIT");
}
Toast.makeText(getContext(), msg, Toast.LENGTH_SHORT).show();
}
};
//*** torno la vista che finirà dentro "setAdapter()"
return row;
}
}
안녕하세요 Perroloco, 내 대답은 귀하의 답변을 주셔서 감사합니다. 그래서 ** 내 사용자 지정 어댑터 클래스 ** 내부에 ** 정의 된 수신기로 항목을 삭제할 것이므로 "어댑터에 대한 직접적인 참조가 없습니다. "이"를 통해 아니라면 ... "하지만 그것은 효과가 없습니다. – tune