OnClickListener适配器上点¯xOnItemClickListener上的ListView [英] OnClickListener on Adapter x OnItemClickListener on ListView

查看:98
本文介绍了OnClickListener适配器上点¯xOnItemClickListener上的ListView的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我一直想知道哪一个是更快/更好地使用:

 公共类SomeAdapter延伸BaseAdapter
{    私人活动活动;
    私人的ArrayList<&HashMap的LT;字符串,字符串>>数据;
    私有静态LayoutInflater吹气= NULL;    公共SomeAdapter(活动一,ArrayList的<&HashMap的LT;字符串,字符串>> d)
    {
        活性=一个;
        数据= D;
        吹气=(LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }    公众诠释的getCount(){返回data.size(); }    公共景观的getItem(INT位置){返回NULL; }    众长getItemId(INT位置){返回位置; }    静态类ViewHolder
    {
        公共ImageView的someImage;
    }    公共查看getView(INT位置,查看convertView,父母的ViewGroup)
    {
        ViewHolder持有人;        如果(convertView == NULL)
        {
            convertView = inflater.inflate(R.layout.adapter_some,NULL);
            持有人=新ViewHolder();            holder.someImage =(ImageView的)convertView.findViewById(R.id.someImage);
        }
        其他
        {
            支架=(ViewHolder)convertView.getTag();
        }        HashMap的<字符串,字符串>事件=新的HashMap<字符串,字符串>();
        事件= data.get(位置);        INT解析度=的Integer.parseInt(events.get(imageResource));        holder.someImage.setImageResource(R.drawable.res);        convertView.setOnClickListener(新OnClickListener
        {
            @覆盖
            公共无效的onClick(视图v)
            {
                // TODO东西在这里
            }
        });        返回convertView;
    }
}

我应该设置 OnClickListener convertView 或者我应该设置 OnItemClickListener 的ListView

  someList =(ListView控件)((ViewGroup中)rootView.findViewById(R.id.listLayout))getChildAt(0);someList.setAdapter(新SomeAdapter(getActivity(),NULL));someList.setOnItemClickListener(新OnItemClickListener()
{
    @覆盖
    公共无效onItemClick(适配器视图<>为arg0,ARG1观,诠释ARG2,
            长ARG3)
    {
        // TODO东西在这里
    }
});

感谢


解决方案

  

我应该设置 OnClickListener 上convertView或者我应该设置 OnItemClickListener 上的ListView?


这是设置 OnItemClickListener 你的的ListView

这样,您将设置监听整个一行。您应该只设置一个 OnClickListener 在你的列表视图查看 C>行,如果你有一个可点击以及做其他事的各种元素,比全行上的click事件。

I've always been wondering which one is faster / better to use:

public class SomeAdapter extends BaseAdapter
{

    private Activity activity;
    private ArrayList<HashMap<String, String>> data;
    private static LayoutInflater inflater = null;

    public SomeAdapter(Activity a, ArrayList<HashMap<String, String>> d)
    {
        activity = a;
        data = d;
        inflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }

    public int getCount() { return data.size(); }

    public View getItem(int position) { return null; }

    public long getItemId(int position) { return position; }

    static class ViewHolder
    {
        public ImageView someImage;
    }

    public View getView(int position, View convertView, ViewGroup parent)
    {
        ViewHolder holder;

        if(convertView == null)
        {
            convertView = inflater.inflate(R.layout.adapter_some, null);
            holder = new ViewHolder();

            holder.someImage = (ImageView) convertView.findViewById(R.id.someImage);
        }
        else
        {
            holder = (ViewHolder) convertView.getTag();
        }

        HashMap<String, String> events = new HashMap<String, String>();
        events = data.get(position);

        int res = Integer.parseInt(events.get("imageResource"));

        holder.someImage.setImageResource(R.drawable.res);

        convertView.setOnClickListener(new OnClickListener
        {
            @Override
            public void onClick(View v)
            {
                // TODO something here
            }
        });

        return convertView;
    }
}

Should I set OnClickListener on convertView or should I set OnItemClickListener on ListView:

someList = (ListView) ((ViewGroup) rootView.findViewById(R.id.listLayout)).getChildAt(0);

someList.setAdapter(new SomeAdapter(getActivity(), null));

someList.setOnItemClickListener(new OnItemClickListener()
{
    @Override
    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
            long arg3)
    {
        // TODO something here
    }
});

Thanks

解决方案

Should I set OnClickListener on convertView or should I set OnItemClickListener on ListView?

Set an OnItemClickListener on your ListView.

This way you'll set the listener on the whole row. You should only set an OnClickListener on a specific View in your ListViews row, if you have various elements that should be clickable and do something else, than a click event on the whole row.

这篇关于OnClickListener适配器上点¯xOnItemClickListener上的ListView的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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