使用简单的光标适配器时如何设置按钮onclicklistner [英] How can I set up button onclicklistner when using simple cursor adapter

查看:70
本文介绍了使用简单的光标适配器时如何设置按钮onclicklistner的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

  • 这是我用来通过简单的CursorAdapter
  • 显示自定义ListView的代码
  • 我正在使用此代码显示购物车商品,并且我想在ListView
  • 中添加按钮
  • 由于我是android开发的新手,所以我无法弄清楚问题出在哪里
  • 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;}



            }
        });

推荐答案

一种解决方案是创建扩展SimpleCursorAdapterCustomAdapter.
然后覆盖bindView方法
bindView中,找到Button然后处理onClickEvent

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 

            }
        });
    }
}

Activity中使用

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

希望这会有所帮助

这篇关于使用简单的光标适配器时如何设置按钮onclicklistner的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆