使用ListView中的删除按钮删除行

所以我使用BaseAdapter填充了列表视图,并且将textview设置为按钮。我想使用该按钮删除数据库中的行,然后更新列表视图

public class HistoryAdapter extends BaseAdapter {

    private Context mContext;
    Cursor cursor;
    history historyClass = new history();
    MySQLiteHelper db = new MySQLiteHelper(mContext);

    public HistoryAdapter(Context context, Cursor cur){
        super();
        mContext = context;
        cursor = cur;
    }

    public int getCount(){
        // return the number of records in cursor
        return cursor.getCount();
    }

    // getView method is called for each item of ListView
    public View getView(final int position, View view, ViewGroup parent){

        // inflate the layout for each item of listView
        LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        view = inflater.inflate(R.layout.history_list_item, null);

        // move the cursor to required position
        cursor.moveToPosition(position);

        final String id = cursor.getString(cursor.getColumnIndex("_id"));
        final long deleteId = Long.parseLong(id);

        // fetch the information for each card
        String pricePerGallon = cursor.getString(cursor.getColumnIndex("pricePerGallon"));
        String gallons = cursor.getString(cursor.getColumnIndex("gallons"));
        String odometer = cursor.getString(cursor.getColumnIndex("odometer"));
        String date = cursor.getString(cursor.getColumnIndex("date"));
        String filledOrNot = cursor.getString(cursor.getColumnIndex("filledOrNot"));
        String comments = cursor.getString(cursor.getColumnIndex("comments"));
        //String milesPerGallon = cursor.getString(cursor.getColumnIndex("miledPerGallon"));
        String totalSpent = cursor.getString(cursor.getColumnIndex("totalSpent"));

        // get the reference of TextViews
        TextView textViewPricePerGallon = (TextView) view.findViewById(R.id.cardPrice);
        TextView textViewGallons = (TextView) view.findViewById(R.id.cardGallons);
        TextView textViewOdometer = (TextView) view.findViewById(R.id.cardOdometer);
        TextView textViewDate = (TextView) view.findViewById(R.id.cardDate);
        TextView textViewFilledOrNot = (TextView) view.findViewById(R.id.cardFilledOrNot);
        TextView textViewComments = (TextView) view.findViewById(R.id.cardComments);
        //TextView textViewMilesPerGallon = (TextView) view.findViewById(R.id.mpg);
        TextView textViewTotalSpent = (TextView) view.findViewById(R.id.usd);
        TextView textViewDeleteButton = (TextView) view.findViewById(R.id.deleteButton);

        // Set the data to each TextView
        textViewPricePerGallon.setText(pricePerGallon);
        textViewGallons.setText(gallons);
        textViewOdometer.setText(odometer);
        textViewDate.setText(date);
        textViewFilledOrNot.setText(filledOrNot);
        textViewComments.setText(comments);
        //textViewMilesPerGallon.setText(milesPerGallon);
        textViewTotalSpent.setText(totalSpent);



        textViewDeleteButton.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
              Log.d("History Adapter", "" + deleteId);
              //need to delete here


            }
     });

        return view;

    }

    public Object getItem(int position){
        return position;
    }

    public long getItemId(int position){
        return position;
    }

}

这是我的MySQLiteHelper.java

public void deleteGasLog(long id) {

        // 1. get reference to writable DB
        SQLiteDatabase db = this.getWritableDatabase();

        // 2. delete
        db.delete(TABLE_GASLOG, //table name
                KEY_ID + " = ?",  // selections
                new String[] { String.valueOf(id) }); //selections args

        // 3. close
        db.close();

        //log

    }

出于某种原因,我很难提出需要放入侦听器以正确触发帮助器中的deleteGasLog方法的问题。

如果我只是做db.deleteGasLog(deleteId); 我收到NPE错误

02-21 15:22:11.694: E/AndroidRuntime(15020): java.lang.NullPointerException
02-21 15:22:11.694: E/AndroidRuntime(15020):    at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:224)
02-21 15:22:11.694: E/AndroidRuntime(15020):    at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:164)
02-21 15:22:11.694: E/AndroidRuntime(15020):    at com.rcd.fuelr.MySQLiteHelper.deleteGasLog(MySQLiteHelper.java:165)
02-21 15:22:11.694: E/AndroidRuntime(15020):    at com.rcd.fuelr.HistoryAdapter$1.onClick(HistoryAdapter.java:80)
ezcoding

您必须在构造函数中实例化MySQLiteOpenHelper对象(db)。现在是:

private Context mContext; //Help I'm null
        Cursor cursor;
        history historyClass = new history();
        MySQLiteHelper db = new MySQLiteHelper(mContext); //null is inserted here

        public HistoryAdapter(Context context, Cursor cur){
            super();
            mContext = context;
            cursor = cur;
        }

这应该是这样的:

private Context mContext; //Help I'm null
        Cursor cursor;
        history historyClass = new history();
        MySQLiteHelper db; 

        public HistoryAdapter(Context context, Cursor cur){
            super();
            mContext = context;
            cursor = cur;
            db = new MySQLiteHelper(context); //not null anymore
        }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

用于删除Xamarin.Forms中当前ListView行的按钮

来自分类Dev

使用 ASP GridView 中的删除按钮删除行

来自分类Dev

如何使用ListViewItem中的按钮从ListView中删除对象?

来自分类Dev

如何使用angularjs使用单选按钮删除表中的行?

来自分类Dev

如何获得删除按钮以删除listView中的项目?

来自分类Dev

如何获得删除按钮以删除listView中的项目?

来自分类Dev

如何使用行中嵌入的删除按钮删除SAPUI5表中的行

来自分类Dev

如何使用行中嵌入的删除按钮删除SAPUI5表中的行

来自分类Dev

使用击倒JS中的按钮删除表格行

来自分类Dev

使用按钮从表中删除数据行

来自分类Dev

如何通过单击LISTVIEW的每一行中的按钮来删除列表行

来自分类Dev

使用PHP按钮删除单个行/行

来自分类Dev

如何使用单个“删除”按钮从不同的JTable中删除行

来自分类Dev

如何使用数据网格上的每个删除按钮从数据库中删除行

来自分类Dev

从ListView Android中删除了错误的行

来自分类Dev

在每行内的控制下从ListView中删除/删除行

来自分类Dev

在每行内的控制下从ListView中删除/删除行

来自分类Dev

如何在“删除”按钮上删除表中的行

来自分类Dev

单击相应的删除按钮从表中删除行

来自分类Dev

使用按钮事件处理程序删除行

来自分类Dev

使用自定义光标类在ListView中添加删除按钮

来自分类Dev

appcelerator删除listview行?

来自分类Dev

如何使用React中的删除按钮从列表中删除项目?

来自分类Dev

Android:带删除按钮的Listview

来自分类Dev

使用Bloc从ListView中删除特定项目

来自分类Dev

如何使用alertDialog从listView中删除项目

来自分类Dev

Android滑动ListView-使用内部按钮删除项目

来自分类Dev

如何使用php中的按钮删除LIMIT?

来自分类Dev

如何使用php中的按钮删除LIMIT?

Related 相关文章

  1. 1

    用于删除Xamarin.Forms中当前ListView行的按钮

  2. 2

    使用 ASP GridView 中的删除按钮删除行

  3. 3

    如何使用ListViewItem中的按钮从ListView中删除对象?

  4. 4

    如何使用angularjs使用单选按钮删除表中的行?

  5. 5

    如何获得删除按钮以删除listView中的项目?

  6. 6

    如何获得删除按钮以删除listView中的项目?

  7. 7

    如何使用行中嵌入的删除按钮删除SAPUI5表中的行

  8. 8

    如何使用行中嵌入的删除按钮删除SAPUI5表中的行

  9. 9

    使用击倒JS中的按钮删除表格行

  10. 10

    使用按钮从表中删除数据行

  11. 11

    如何通过单击LISTVIEW的每一行中的按钮来删除列表行

  12. 12

    使用PHP按钮删除单个行/行

  13. 13

    如何使用单个“删除”按钮从不同的JTable中删除行

  14. 14

    如何使用数据网格上的每个删除按钮从数据库中删除行

  15. 15

    从ListView Android中删除了错误的行

  16. 16

    在每行内的控制下从ListView中删除/删除行

  17. 17

    在每行内的控制下从ListView中删除/删除行

  18. 18

    如何在“删除”按钮上删除表中的行

  19. 19

    单击相应的删除按钮从表中删除行

  20. 20

    使用按钮事件处理程序删除行

  21. 21

    使用自定义光标类在ListView中添加删除按钮

  22. 22

    appcelerator删除listview行?

  23. 23

    如何使用React中的删除按钮从列表中删除项目?

  24. 24

    Android:带删除按钮的Listview

  25. 25

    使用Bloc从ListView中删除特定项目

  26. 26

    如何使用alertDialog从listView中删除项目

  27. 27

    Android滑动ListView-使用内部按钮删除项目

  28. 28

    如何使用php中的按钮删除LIMIT?

  29. 29

    如何使用php中的按钮删除LIMIT?

热门标签

归档