设置的OnClick监听器上的按钮,里面的android列表视图 [英] Set OnClick Listener on button inside list view in android

查看:136
本文介绍了设置的OnClick监听器上的按钮,里面的android列表视图的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个列表视图在我的屏幕,每一个列表项包含2文本视图和一个按钮。 在按钮点击我要带列表项中选择指数从载体得到一些数据。

这是我的名单自定义Adapter.But我不知道该怎么做。

 私有类CustomAdapter扩展ArrayAdapter< ServicesItems> {

    公共CustomAdapter(上下文的背景下,INT资源,
            INT textViewResourceId,名单,其中,ServicesItems>对象){
        超(背景下,资源,textViewResourceId,对象);
    }

    @覆盖
    公共查看getView(INT位置,查看convertView,ViewGroup中父){
        ViewHolder支架=无效;
        TextView的项目= NULL;
        TextView中描述= NULL;
        按钮subNowBtn;

        ServicesItems II =的getItem(位置);

        如果(空== convertView){
            convertView = mInflater.inflate(
                    R.layout.list_of_servics_item_2,NULL);

            持有人=新ViewHolder(convertView);
            convertView.setTag(保持器);
        }
        支架=(ViewHolder)convertView.getTag();
        // cat_name = holder.gettitle();

        资源资源= getResources();

        ServicesItems bean1 =(ServicesItems)servicesVector
                .elementAt(位置);

        。字符串cat_name_str = bean1.getService_name()的toString();
        。字符串descreption = bean1.getDescription()的toString();


        项目= holder.getItem();
        item.setText(bean1.getDescription());

        说明= holder.getDescription();
        description.setText(bean1.getService_name());

         subNowBtn = holder.getSubButton();

        返回convertView;
    }

    私有类ViewHolder {
        私人查看MROW;
        私人TextView中描述= NULL;
        私人TextView的项目= NULL;
        私人按钮副= NULL;

        公共ViewHolder(查看行){
            MROW =行;
        }

        公众的TextView getDescription(){
            如果(空==介绍){
                说明=(TextView中)MROW
                        .findViewById(R.id.category_tv);
            }
            返回描述;
        }

        公众的TextView的getItem(){
            如果(空==项目){
                项目=(TextView中)
           mRow.findViewById(R.id.descreption_tv);
            }
            归还物品;
        }

        公共按钮getSubButton(){
            如果(空==子){
                分=(按钮)findViewById(R.id.subscribe_now_btn);


            }
            返回子;
        }

    }

}
 

解决方案

在您的适配器试试这个:

  @覆盖
公共查看getView(最终诠释的立场,观点convertView,父母的ViewGroup)
{
    查看排= convertView;
    YourWrapper包装= NULL;

    如果(行== NULL)
    {
        行= inflater.inflate(R.layout.layout,父母,假);
        包装=新YourWrapper(行);
        row.setTag(包装);
    }
    其他
        包装=(YourWrapper)row.getTag();

    wrapper.getButton()。setOnClickListener(新OnClickListener()
    {
        @覆盖
        公共无效的onClick(视图v)
        {
            // 你要什么
        }
    });

    返回行;
}
 

修改

您封装类:

 公共类YourWrapper
{
    私人查看基地;
    私人Button按钮;

    公共YourWrapper(查看基地)
    {
        this.base =基地;
    }

    公共按钮getButton()
    {
        如果(键== NULL)
        {
            按钮=(按钮)base.findViewById(R.id.your_button);
        }
        返程(button`);
    }
}
 

修改分=(按钮)findViewById(R.id.subscribe_now_btn); 分=(按钮)mRow.findViewById(R.id .subscribe_now_btn);

I have a list view in my screen, every list item contains 2 text views and one button. On button click i want to take the list item selected index to get some data from a vector.

This is my List Custom Adapter.But i don't know how to do that.

private class CustomAdapter extends ArrayAdapter<ServicesItems> {

    public CustomAdapter(Context context, int resource,
            int textViewResourceId, List<ServicesItems> objects) {
        super(context, resource, textViewResourceId, objects);
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder = null;
        TextView item = null;
        TextView description = null;
        Button subNowBtn;

        ServicesItems ii = getItem(position);

        if (null == convertView) {
            convertView = mInflater.inflate(
                    R.layout.list_of_servics_item_2, null);

            holder = new ViewHolder(convertView);
            convertView.setTag(holder);
        }
        holder = (ViewHolder) convertView.getTag();
        // cat_name = holder.gettitle();

        Resources resources = getResources();

        ServicesItems bean1 = (ServicesItems) servicesVector
                .elementAt(position);

        String cat_name_str = bean1.getService_name().toString();
        String descreption = bean1.getDescription().toString();


        item = holder.getItem();
        item.setText(bean1.getDescription());

        description = holder.getDescription();
        description.setText(bean1.getService_name());

         subNowBtn=holder.getSubButton();

        return convertView;
    }

    private class ViewHolder {
        private View mRow;
        private TextView description = null;
        private TextView item = null;
        private Button sub = null;

        public ViewHolder(View row) {
            mRow = row;
        }

        public TextView getDescription() {
            if (null == description) {
                description = (TextView) mRow
                        .findViewById(R.id.category_tv);
            }
            return description;
        }

        public TextView getItem() {
            if (null == item) {
                item = (TextView)       
           mRow.findViewById(R.id.descreption_tv);
            }
            return item;
        }

        public Button getSubButton(){
            if(null==sub){
                sub=(Button)findViewById(R.id.subscribe_now_btn);


            }
            return sub;
        }

    }

}

解决方案

In your Adapter try this:

@Override
public View getView(final int position, View convertView, ViewGroup parent)
{
    View row = convertView;
    YourWrapper wrapper = null;

    if (row == null)
    {
        row = inflater.inflate(R.layout.layout, parent, false);
        wrapper = new YourWrapper (row);
        row.setTag(wrapper);
    }
    else
        wrapper = (YourWrapper) row.getTag();

    wrapper.getButton().setOnClickListener(new OnClickListener()
    {
        @Override
        public void onClick(View v)
        {
            // What you want
        }
    });

    return row;
}

EDIT

Your wrapper class:

public class YourWrapper
{
    private View base;
    private Button button;

    public YourWrapper(View base)
    {
        this.base = base;
    }

    public Button getButton()
    {
        if (button == null)
        {
            button = (Button) base.findViewById(R.id.your_button);
        }
        return (button`);
    }
}

Change sub=(Button)findViewById(R.id.subscribe_now_btn); into sub=(Button) mRow.findViewById(R.id.subscribe_now_btn);

这篇关于设置的OnClick监听器上的按钮,里面的android列表视图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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