如何在ListView

时间:2016-07-06 10:12:44

标签: android sqlite listview onclick simplecursoradapter

如何处理onClick项目中按钮的ListView个事件。借助应用程序中的内容提供程序获取数据。实现了自定义SimpleCursorAdapter但无法从onClick事件中更新数据库。在下面找到CustomSimpleCursorAdapter代码。

我正在用android来热身。所以可能是我错过了一些非常简单的东西。任何帮助表示赞赏

public class CustomSimpleCursorAdapter extends SimpleCursorAdapter {
        private Context mContext;
        private Context appContext;
        private int layout;
        private Cursor cr;
        private final LayoutInflater inflater;

        public CustomSimpleCursorAdapter(Context context, int layout, Cursor c, String[] from, int[] to,int flag) {
            super(context, layout, c, from, to,flag);
            this.layout = layout;
            this.mContext = context;
            this.inflater = LayoutInflater.from(context);
            this.cr = c;
        }

        @Override
        public View newView(Context context, Cursor cursor, ViewGroup parent) {
            return inflater.inflate(layout, null);
        }

        @Override
        public void bindView(View view, Context context, Cursor cursor) {
            super.bindView(view, context, cursor);
            TextView name =(TextView)view.findViewById(R.id.productName_value);
            final TextView quantity = (TextView) view.findViewById(R.id.availableInventory_value);
            TextView price = (TextView) view.findViewById(R.id.price_value);
            TextView sales = (TextView) view.findViewById(R.id.unitsSold_value);
            Button sellButton =(Button)view.findViewById(R.id.sellButton);


            int name_index = cursor.getColumnIndexOrThrow(InventoryTable.COLUMN_NAME);
            int quantity_index = cursor.getColumnIndexOrThrow(InventoryTable.COLUMN_QUANTITY);
            int price_index =cursor.getColumnIndexOrThrow(InventoryTable.COLUMN_PRICE);
            int sales_index = cursor.getColumnIndexOrThrow(InventoryTable.COLUMN_SALES);


            name.setText(cursor.getString(name_index));
            quantity.setText(cursor.getString(quantity_index));
            price.setText(cursor.getString(price_index));
            sales.setText(cursor.getString(sales_index));
            Log.i("check before","check ok");

            sellButton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Uri prodUri = Uri.parse(MyInventoryContentProvider.CONTENT_URI + "/" + v.getId());
                    ContentValues values = new ContentValues();
                    String new_quantity = String.valueOf(Integer.parseInt(quantity.getText().toString()) - 1);
                    values.put(InventoryTable.COLUMN_QUANTITY,new_quantity);

  InventoryUpdateTask().execute(MyInventoryContentProvider.CONTENT_URI.toString(), InventoryTable.COLUMN_QUANTITY, new_quantity, InventoryTable.COLUMN_ID, String.valueOf(v.getId()));

                }
            });

        }
        private class InventoryUpdateTask extends AsyncTask<String, Void, Void> {

            private MyInventoryContentProvider dbHelper = new MyInventoryContentProvider();
            @Override
            protected Void doInBackground(String... params) {
                ContentValues values = new ContentValues();
                    values.put(params[1], Integer.parseInt(params[2]));
                dbHelper.onCreate();
                dbHelper.update(Uri.parse(params[0]), values, params[3], new String[]{params[4]});
                return null;
            }

            @Override
            protected void onPostExecute(Void result) {

            }
        }

    }

0 个答案:

没有答案