Ich habe eine Listview, auf der ich Daten aus meiner Datenbank zeige und jetzt möchte ich Zeile auf der Basis der Schaltfläche gelöscht klicken, die mit jeder Zeile verknüpft ist.Löschen einer Zeile aus einem ListView mit dem zugehörigen Button
Ich habe Ausnahme in CustomAdapter-Klasse, wenn ich Done-Taste drücke. Cursor Code ist dies:
public class CustomAdapter extends CursorAdapter {
TextView task,daate;
Button del;
public static int id;
Context ct;
public CustomAdapter(Context context, Cursor cursor) {
super(context, cursor, 0);
}
// The newView method is used to inflate a new view and return it,
// you don't bind any data to the view at this point.
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
ct=context;
return LayoutInflater.from(context).inflate(R.layout.adapter, parent, false);
}
// The bindView method is used to bind all data to a given view
// such as setting the text on a TextView.
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
final DatabaseHelper help=new DatabaseHelper(ct);
del = (Button) convertView.findViewById(R.id.deleteBtn);
del.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
help.deleteRecordWithId(position);
}
}
);
return super.getView(position, convertView, parent);
}
@Override
public void bindView(View view, Context context, final Cursor cursor) {
// Find fields to populate in inflated template
task = (TextView) view.findViewById(R.id.dynamicTask);
daate = (TextView) view.findViewById(R.id.dynamicDate);
id=cursor.getInt(cursor.getColumnIndex("_id"));
String Task=cursor.getString(cursor.getColumnIndex("task"));
String Daate=cursor.getString(cursor.getColumnIndex("ddate"));
task.setText(Task);
daate.setText(Daate);
}
}
und meine Datenbankfunktion deleteRecordWithId() ist:
public boolean deleteRecordWithId(int id) {
SQLiteDatabase db=this.getWritableDatabase();
long rows=db.delete(TABLE_NAME,"_id=?",new String[] {String.valueOf(id)});
if(rows>0) {
return true;
}
else {
return false;
}
}
und ich erhalte diese Ausnahme:
java.lang.NullPointerException: Attempt to invoke virtual method
'android.view.View android.view.View.findViewById(int)' on a null object
reference
Was ist falsch in diesem Code. Bitte hilf mir, es zu korrigieren.
Mögliches Duplikat [Was für eine Nullpointer ist, und wie kann ich es beheben?] (Https://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how- do-i-fix-it) –
Die View, auf die Sie 'findViewById' aufrufen, ist null. Überprüfen Sie, ob Sie die Ansicht initialisieren. Verwenden Sie auch 'RecyclerView' und nicht 'ListView's, da es leistungsfähig ist –
warum es nullpointer Ausnahme zeigt?Ich habe es mit seiner ID definiert – Suraj