OnClickListener适配器上点¯xOnItemClickListener上的ListView [英] OnClickListener on Adapter x OnItemClickListener on 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 $一个特定的
查看
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
onconvertView
or should I setOnItemClickListener
onListView
: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 setOnItemClickListener
on ListView?Set an
OnItemClickListener
on yourListView
.This way you'll set the listener on the whole row. You should only set an
OnClickListener
on a specificView
in yourListViews
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屋!