如何从自定义 ListView 中删除行条目?

How to delete Row entry from Custom ListView?

我创建了一个自定义列表视图。请告诉我如何从列表视图中删除条目。我不知道在我的代码中的何处编写删除按钮的代码。请帮我。谢谢..

这里是ListAdapater.java class:

package com.example.login;

import java.util.ArrayList;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

public class ListAdapater extends ArrayAdapter<String> {
customButtonListener customListner;

public interface customButtonListener {
    public void onButtonClickListner(int position, String value);
}

public void setCustomButtonListner(customButtonListener listener) {
    this.customListner = listener;
}

private Context context;
private ArrayList<String> data = new ArrayList<String>();

public ListAdapater(Context context, ArrayList<String> dataItem) {
    super(context, R.layout.my_custom_list_layout, dataItem);
    this.data = dataItem;
    this.context = context;
}

@Override
public View getView(final int position, View convertView, ViewGroup parent) {
    ViewHolder viewHolder;
    if (convertView == null) {
        LayoutInflater inflater = LayoutInflater.from(context);
        convertView = inflater.inflate(R.layout.my_custom_list_layout, null);
        viewHolder = new ViewHolder();
        viewHolder.text = (TextView) convertView.findViewById(R.id.TextView);
        viewHolder.button = (Button) convertView.findViewById(R.id.delete);
        convertView.setTag(viewHolder);
    } else {
        viewHolder = (ViewHolder) convertView.getTag();
    }
    final String temp = getItem(position);
    viewHolder.text.setText(temp);
    viewHolder.button.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            if (customListner != null) {
                customListner.onButtonClickListner(position, temp);

            }

        }
    });

    return convertView;
}

public class ViewHolder {
    TextView text;
    Button button;
}
}

Hompage.java class:

package com.example.login;

import com.example.login.ListAdapater.customButtonListener;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import android.app.Activity;
import android.database.Cursor;
import android.database.DataSetObserver;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.Toast;

public class Hompage extends Activity implements customButtonListener {

ListView listView;
ListAdapater adapter;
ArrayList<String> dataItems = new ArrayList<String>();
SQLiteDatabase db;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.home);
    db = openOrCreateDatabase("login", MODE_PRIVATE, null);
    // My code
    String query1 = "SELECT * FROM USERS;";
    int c = 0;
    try {
        Cursor c1 = db.rawQuery(query1, null);
        if (c1.moveToFirst()) {
            String[] temp2 = new String[c1.getCount()];
            do {
                String tempo = "Name" + ": " + c1.getString(1) + " " + c1.getString(2) + " \n" + "Gender" + ": "
                        + c1.getString(4) + "\n " + "Hobbies" + ": " + c1.getString(8) + " \n" + "User Type" + ": "
                        + c1.getString(9);
                temp2[c] = tempo;
                c++;
                // String[] dataArray = temp2;
                // List<String> datatemp = Arrays.asList(dataArray);
                // dataItems.addAll(datatemp);
            } while (c1.moveToNext());
            String[] dataArray = temp2;
            List<String> datatemp = Arrays.asList(dataArray);
            dataItems.addAll(datatemp);
            listView = (ListView) findViewById(R.id.listView);

            adapter = new ListAdapater(Hompage.this, dataItems);
            adapter.setCustomButtonListner(Hompage.this);
            listView.setAdapter(adapter);
        }
    } catch (Exception e) {

    }

}


@Override
public void onButtonClickListner(int position, String value) {


    //EDITED CODE...

    // TODO Auto-generated method stub
    String query = "SELECT USER_TYPE FROM USERS WHERE userName =  '" + temp + "'";
    Cursor c2 = db.rawQuery(query, null);
    if (c2.moveToFirst()) {

        if (c2.getString(0).equals("Admin")) {
            dataItems.remove(position);
            adapter.notifyDataSetChanged();     
            Toast.makeText(getApplicationContext(), "Deleted", Toast.LENGTH_LONG).show();
            return;
        }
        else{
            Toast.makeText(getApplicationContext(), "Only Admin can delete", Toast.LENGTH_LONG).show();
        }
    }


}

}

这样试试

@Override
public void onButtonClickListner(int position, String value) {
// TODO Auto-generated method stub
   dataItems.remove(position);
   adapter.notifyDataSetChanged();

// call this method
deleteRowFromTable(your_table_name, your_column_name, value)

}

public void deleteRowFromTable(String tableName, String columnName, String keyValue) {
    String whereClause = columnName + "=?";
    String[] whereArgs = new String[]{String.valueOf(keyValue)};
    yourDatabase.delete(tableName, whereClause, whereArgs);
}