Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
712 views
in Technique[技术] by (71.8m points)

android - How can I set up button onclicklistner when using simple cursor adapter

  • Here is the code I am using to show a custom ListView using simple CursorAdapter
  • I am using this code to show cart items, and I want to add button in ListView
  • As I am new to android development I'm not able to figure out what the problem is

myDbHelper.openDataBase();

    final Cursor ictemp = myDbHelper.getOrdredItems(myDbHelper);
    if (ictemp != null) {

        ictemp.moveToFirst();
        count = ictemp.getCount();
        Log.d("count", "count===" + count);

        String[] from = new String[] { "item_name", "item_rate", "qty",
                "unit" };
        int[] to = new int[] { R.id.tv_Name, R.id.tv_Rate, R.id.et_qty,
                R.id.tv_unit };

        final SimpleCursorAdapter sc = new SimpleCursorAdapter(this,
                R.layout.list_row2, ictemp, from, to, 0);

        final Cursor crs = myDbHelper.getTotal(myDbHelper);
        if (crs != null) {

            crs.moveToFirst();

            String total = crs.getString(0);
            Gtotal.setText("Rs." + total);
            tvcount.setText("" + count);



        }

        lv.setAdapter(sc);

        lv.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> arg0, View view,
                    final int pos, long arg3) {


                remove = (Button) arg0.findViewById(R.id.btn_remove);
                switch (arg0.getId()) {

                case R.id.btn_remove:

                    Toast.makeText(ctx, "Clicked on " + pos,
                            Toast.LENGTH_SHORT).show();

                    break;}



            }
        });
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

One solution is to create a CustomAdapter that extends SimpleCursorAdapter.
Then override bindView method
In bindView, find the Button then handle onClickEvent

public class CustomAdapter extends SimpleCursorAdapter {

    private Context mContext;
    private Context appContext;
    private int layout;
    private Cursor cr;
    private final LayoutInflater inflater;

    public CustomAdapter(Context context, int layout, Cursor c, String[] from, int[] to) {
        super(context, layout, c, from, to);
        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 tv_Name = (TextView) view.findViewById(R.id.tv_Name);
        tv_Name.setText(...);
        ...
        Button btnRemove = (Button) view.findViewById(R.id.btn_remove);
        btnRemove.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                // button click
                // Remove your item here 

            }
        });
    }
}

Use it in Activity by

 final CustomAdapter sc = new CustomAdapter(this,R.layout.list_row2,ictemp, from, to, 0);
 lv.setAdapter(sc)

Hope this helps


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...