在单击CursorAdapter中的按钮时如何在列表视图项行中执行更新和删除操作

史蒂夫

在sqlite数据库的帮助下,我添加了板球播放器名称,最后在列表视图中显示了名称。

我在CustomCursorAdapter.java中添加了更新和删除按钮。以下是我发布的适配器代码:

CustomCursorAdapter.java:

import android.content.Context;
import android.database.Cursor;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.CursorAdapter;
import android.widget.TextView;

public class CustomCursorAdapter extends CursorAdapter {

    public CustomCursorAdapter(Context context, Cursor c) {
        super(context, c);
    }

    @Override
    public View newView(Context context, Cursor cursor, ViewGroup parent) {
        // when the view will be created for first time,
        // we need to tell the adapters, how each item will look
        LayoutInflater inflater = LayoutInflater.from(parent.getContext());
        View retView = inflater.inflate(R.layout.single_row_item, parent, false);

        return retView;
    }

    @Override
    public void bindView(View view, Context context, Cursor cursor) {
        // here we are setting our data
        // that means, take the data from the cursor and put it in views

        TextView textViewPersonName = (TextView) view.findViewById(R.id.tv_person_name);
        textViewPersonName.setText(cursor.getString(cursor.getColumnIndex(cursor.getColumnName(1))));

      //Handle buttons and add onClickListeners
        Button deleteBtn = (Button)view.findViewById(R.id.delete_btn);
        Button updateBtn = (Button)view.findViewById(R.id.update_btn);

        deleteBtn.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v) { 

                notifyDataSetChanged();
            }
        });  

        updateBtn.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v) { 
                //do something

                notifyDataSetChanged();
            }
        });        
    }
}  

single_row_item.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <Button
        android:id="@+id/update_btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_toLeftOf="@+id/delete_btn"
        android:text="Update" />

    <Button
        android:id="@+id/delete_btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:text="Delete" />

    <TextView
        android:id="@+id/tv_person_name"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/add_btn"
        android:layout_alignBottom="@+id/add_btn"
        android:layout_alignParentLeft="true"
        android:paddingBottom="5dp"
        android:text="Sample Data"
        android:textSize="15sp" />

</RelativeLayout>

PersonDatabaseHelper.java:

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

public class PersonDatabaseHelper {

    private static final String TAG = PersonDatabaseHelper.class.getSimpleName();

    // database configuration
    // if you want the onUpgrade to run then change the database_version
    private static final int DATABASE_VERSION = 1;
    private static final String DATABASE_NAME = "mydatabase.db";

    // table configuration
    private static final String TABLE_NAME = "person_table";         // Table name
    private static final String PERSON_TABLE_COLUMN_ID = "_id";     // a column named "_id" is required for cursor
    private static final String PERSON_TABLE_COLUMN_NAME = "person_name";
    private static final String PERSON_TABLE_COLUMN_PIN = "person_pin";

    private DatabaseOpenHelper openHelper;
    private SQLiteDatabase database;

    // this is a wrapper class. that means, from outside world, anyone will communicate with PersonDatabaseHelper,
    // but under the hood actually DatabaseOpenHelper class will perform database CRUD operations 
    public PersonDatabaseHelper(Context aContext) {

        openHelper = new DatabaseOpenHelper(aContext);
        database = openHelper.getWritableDatabase();
    }

    public void insertData (String aPersonName, String aPersonPin) {

        // we are using ContentValues to avoid sql format errors

        ContentValues contentValues = new ContentValues();

        contentValues.put(PERSON_TABLE_COLUMN_NAME, aPersonName);
        contentValues.put(PERSON_TABLE_COLUMN_PIN, aPersonPin);

        database.insert(TABLE_NAME, null, contentValues);
    }

    public Cursor getAllData () {

        String buildSQL = "SELECT * FROM " + TABLE_NAME;

        Log.d(TAG, "getAllData SQL: " + buildSQL);

        return database.rawQuery(buildSQL, null);
    }

    // this DatabaseOpenHelper class will actually be used to perform database related operation 

    private class DatabaseOpenHelper extends SQLiteOpenHelper {

        public DatabaseOpenHelper(Context aContext) {
            super(aContext, DATABASE_NAME, null, DATABASE_VERSION);
        }

        @Override
        public void onCreate(SQLiteDatabase sqLiteDatabase) {
            // Create your tables here

            String buildSQL = "CREATE TABLE " + TABLE_NAME + "( " + PERSON_TABLE_COLUMN_ID + " INTEGER PRIMARY KEY, " +
                    PERSON_TABLE_COLUMN_NAME + " TEXT, " + PERSON_TABLE_COLUMN_PIN + " TEXT )";

            Log.d(TAG, "onCreate SQL: " + buildSQL);

            sqLiteDatabase.execSQL(buildSQL);
        }

        @Override
        public void onUpgrade(SQLiteDatabase sqLiteDatabase, int oldVersion, int newVersion) {
            // Database schema upgrade code goes here

            String buildSQL = "DROP TABLE IF EXISTS " + TABLE_NAME;

            Log.d(TAG, "onUpgrade SQL: " + buildSQL);

            sqLiteDatabase.execSQL(buildSQL);       // drop previous table

            onCreate(sqLiteDatabase);               // create the table from the beginning
        }
    }
}

输出:

在此处输入图片说明

在上面的屏幕截图中,它显示了“更新和删除”按钮。如果单击“更新”按钮,则必须显示一个警报对话框,并编辑指定列表视图的名称并显示它。

然后,如果单击“删除”按钮,则必须删除相应的列表视图行。

任何人都可以帮助我。谢谢。

史蒂夫

最后我自己完成了它,但是Cursor Adapter我没有使用它Base Adapter来获取输出。

我参考了本教程,花了更多时间找到本教程,这对我有很大帮助,然后我对首页和我的要求进行了一些修改。

在此处输入图片说明

我像这样更改我的首页。下面我展示了MainActivity中的更改:

MainActivity.java:

public class MainActivity extends Activity implements OnClickListener {

    private Button btn_add;
    ActionBar actionBar;

    private ListView listview;

    DatabaseHelper db;
    public ArrayList<ProductModel> _productlist = new ArrayList<ProductModel>();

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        btn_add = (Button) findViewById(R.id.btn_add);

        btn_add.setOnClickListener(this);

        listview = (ListView) findViewById(R.id.listview);

        actionBar = getActionBar();
        ColorDrawable colorDrawable = new ColorDrawable(
                Color.parseColor("#000000"));
        actionBar.setBackgroundDrawable(colorDrawable);

    }  

    @Override
    protected void onResume() {
        // TODO Auto-generated method stub
        super.onResume();

        _productlist.clear();

        db = new DatabaseHelper(getApplicationContext());
        db.getWritableDatabase();
        ArrayList<ProductModel> product_list = db.getProudcts();

        for (int i = 0; i < product_list.size(); i++) {

            String tidno = product_list.get(i).getIdno();

            System.out.println("tidno>>>>>" + tidno);
            String tname = product_list.get(i).getProductname();
            String tprice = product_list.get(i).getProductprice();

            ProductModel _ProductModel = new ProductModel();

            _ProductModel.setIdno(tidno);
            _ProductModel.setProductname(tname);
            _ProductModel.setProductprice(tprice);

            _productlist.add(_ProductModel);
        }

        listview.setAdapter(new ListAdapter(this));
        db.close();

    }

    private class ListAdapter extends BaseAdapter {
        LayoutInflater inflater;
        ViewHolder viewHolder;

        public ListAdapter(Context context) {
            // TODO Auto-generated constructor stub
            inflater = LayoutInflater.from(context);
        }

        @Override
        public int getCount() {
            // TODO Auto-generated method stub
            return _productlist.size();
        }

        @Override
        public Object getItem(int position) {
            // TODO Auto-generated method stub
            return position;
        }

        @Override
        public long getItemId(int position) {
            // TODO Auto-generated method stub
            return position;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            // TODO Auto-generated method stub
            if (convertView == null) {

                convertView = inflater.inflate(R.layout.listview_row, null);
                viewHolder = new ViewHolder();

                viewHolder.txt_pname = (TextView) convertView
                        .findViewById(R.id.txtdisplaypname);
                viewHolder.txt_pprice = (TextView) convertView
                        .findViewById(R.id.txtdisplaypprice);

                viewHolder.txtidno = (TextView) convertView
                        .findViewById(R.id.txtdisplaypid);
                convertView.setTag(viewHolder);

            } else {
                viewHolder = (ViewHolder) convertView.getTag();
            }

            viewHolder.txt_pname.setText(_productlist.get(position)
                    .getProductname().trim());
            viewHolder.txt_pprice.setText(_productlist.get(position)
                    .getProductprice().trim());

            viewHolder.txtidno.setText(_productlist.get(position).getIdno()
                    .trim());

            final int temp = position;
            (convertView.findViewById(R.id.btn_update))
                    .setOnClickListener(new OnClickListener() {

                        public void onClick(View arg0) {

                            String _productid = String.valueOf(_productlist
                                    .get(temp).getIdno());
                            String _productname = _productlist.get(temp)
                                    .getProductname();
                            String _productprice = _productlist.get(temp)
                                    .getProductprice();

                            Intent intent = new Intent(MainActivity.this,
                                    AddUpdateValues.class);

                            Bundle bundle = new Bundle();
                            bundle.putString("id", _productid);
                            bundle.putString("name", _productname);
                            bundle.putString("price", _productprice);
                            intent.putExtras(bundle);
                            startActivity(intent);

                        }
                    });

            (convertView.findViewById(R.id.btn_delete))
                    .setOnClickListener(new OnClickListener() {

                        public void onClick(View arg0) {

                            AlertDialog.Builder alertbox = new AlertDialog.Builder(
                                    MainActivity.this);
                            alertbox.setCancelable(true);
                            alertbox.setMessage("Are you sure you want to delete ?");
                            alertbox.setPositiveButton("Yes",
                                    new DialogInterface.OnClickListener() {

                                        public void onClick(
                                                DialogInterface arg0, int arg1) {

                                            Log.i(">>>TEMP>>>", temp + "");
                                            Log.i(">>>getIdno>>>>>>",
                                                    _productlist.get(temp)
                                                            .getIdno().trim()
                                                            + "");
                                            System.out
                                                    .println(">>>getIdno>>>>>>"
                                                            + _productlist
                                                                    .get(temp)
                                                                    .getIdno()
                                                                    .trim());
                                            db.removeProduct(
                                                    _productlist.get(temp)
                                                            .getIdno().trim(),
                                                    "", "");

                                            MainActivity.this.onResume();

                                            Toast.makeText(
                                                    getApplicationContext(),
                                                    "Project Deleted...",
                                                    Toast.LENGTH_SHORT).show();

                                        }  

                                    });
                            alertbox.setNegativeButton("No",
                                    new DialogInterface.OnClickListener() {
                                        public void onClick(
                                                DialogInterface arg0, int arg1) {

                                        }
                                    });
                            alertbox.show();
                        }
                    });
            return convertView;

        }
    }

    private class ViewHolder {
        TextView txt_pname;
        TextView txt_pprice;
        TextView txtidno;

    }

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        switch (v.getId()) {
        case R.id.btn_add:
            Intent addintent = new Intent(MainActivity.this, AddRecord.class);
            startActivity(addintent);
            break;

        default:
            break;
        }

    }

}

我希望这个答案可能对某人有所帮助。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

单击列表视图行中的按钮时,如何更新使用CursorAdapter的列表视图

来自分类Dev

如何在yii2中的操作列上更改视图,更新和删除url

来自分类Dev

如何在单击按钮时从列表视图中删除特定行(Android)

来自分类Dev

如何在列表视图android中删除列表视图项?

来自分类Dev

单击列表视图项时更新TextView中的值

来自分类Dev

如何在列表视图中单击特定项时从数据库中获取特定列表

来自分类Dev

单击baseadapter中的列表视图项时如何更新文本

来自分类Dev

在列表视图中使用一个按钮更新和保存,删除按钮在 c# 中不起作用

来自分类Dev

JS:如何在选中项目并单击按钮时将其从列表中删除?

来自分类Dev

如何在数组中单击按钮时执行功能?

来自分类Dev

表格行tr中的按钮,仅在单击按钮时才执行按钮操作

来自分类Dev

表格行tr中的按钮,仅在单击按钮时才执行按钮操作

来自分类Dev

如何使用ajax更新数据库中的记录并在单击按钮时删除表行?

来自分类Dev

单击按钮时如何从表中删除行

来自分类Dev

执行批量更新和删除操作时避免PostgreSQL死锁

来自分类Dev

如何在表中插入更新和删除记录

来自分类Dev

当单击列表视图项中的按钮时,只有相应的按钮文本应在 angular2 nativescript 中更改

来自分类Dev

如何在列表视图的特定行中禁用编辑按钮

来自分类Dev

如何从Android中的列表视图中删除列表视图项

来自分类Dev

如何在单击按钮时删除动态创建的视图

来自分类Dev

处理CursorAdapter中的按钮单击

来自分类Dev

如何在UIAlertView的按钮中执行操作?

来自分类Dev

如何在ASP中执行按钮操作?

来自分类Dev

如何在Android中对列表视图进行拉动刷新时禁用列表视图项上的onclickListener?

来自分类Dev

嵌套片段中的按钮在单击时不执行任何操作

来自分类Dev

当单击列表视图项时,未执行任何操作,并且LogCat显示ViewPostImeInputStage ACTION_DOWN

来自分类Dev

当单击列表视图项时,未执行任何操作,并且LogCat显示ViewPostImeInputStage ACTION_DOWN

来自分类Dev

单击后如何更新列表视图项?

来自分类Dev

如何在jQuery Mobile中的可单击列表项中使用按钮创建列表视图

Related 相关文章

  1. 1

    单击列表视图行中的按钮时,如何更新使用CursorAdapter的列表视图

  2. 2

    如何在yii2中的操作列上更改视图,更新和删除url

  3. 3

    如何在单击按钮时从列表视图中删除特定行(Android)

  4. 4

    如何在列表视图android中删除列表视图项?

  5. 5

    单击列表视图项时更新TextView中的值

  6. 6

    如何在列表视图中单击特定项时从数据库中获取特定列表

  7. 7

    单击baseadapter中的列表视图项时如何更新文本

  8. 8

    在列表视图中使用一个按钮更新和保存,删除按钮在 c# 中不起作用

  9. 9

    JS:如何在选中项目并单击按钮时将其从列表中删除?

  10. 10

    如何在数组中单击按钮时执行功能?

  11. 11

    表格行tr中的按钮,仅在单击按钮时才执行按钮操作

  12. 12

    表格行tr中的按钮,仅在单击按钮时才执行按钮操作

  13. 13

    如何使用ajax更新数据库中的记录并在单击按钮时删除表行?

  14. 14

    单击按钮时如何从表中删除行

  15. 15

    执行批量更新和删除操作时避免PostgreSQL死锁

  16. 16

    如何在表中插入更新和删除记录

  17. 17

    当单击列表视图项中的按钮时,只有相应的按钮文本应在 angular2 nativescript 中更改

  18. 18

    如何在列表视图的特定行中禁用编辑按钮

  19. 19

    如何从Android中的列表视图中删除列表视图项

  20. 20

    如何在单击按钮时删除动态创建的视图

  21. 21

    处理CursorAdapter中的按钮单击

  22. 22

    如何在UIAlertView的按钮中执行操作?

  23. 23

    如何在ASP中执行按钮操作?

  24. 24

    如何在Android中对列表视图进行拉动刷新时禁用列表视图项上的onclickListener?

  25. 25

    嵌套片段中的按钮在单击时不执行任何操作

  26. 26

    当单击列表视图项时,未执行任何操作,并且LogCat显示ViewPostImeInputStage ACTION_DOWN

  27. 27

    当单击列表视图项时,未执行任何操作,并且LogCat显示ViewPostImeInputStage ACTION_DOWN

  28. 28

    单击后如何更新列表视图项?

  29. 29

    如何在jQuery Mobile中的可单击列表项中使用按钮创建列表视图

热门标签

归档