设置OnClickListener在ListView中的项目有2个意见 [英] Set OnClickListener for items in ListView with 2 Views
问题描述
我有一个ListView,与此布局的项目:
I have a ListView, with items with this layout:
<LinearLayout ...>
<LinearLayout ...>
<!--Elements -->
</LinearLayout>
<LinearLayout ...>
<!--Elements -->
</LinearLayout>
</LinearLayout>
所以,我的项目有两个不同的部分。我希望能够给每一个项目(每个的LinearLayout)的内部设置不同onclickListener。我已经试过到目前为止覆盖onListItemClick,但它似乎没有正常工作:
So my items have two different sections. I want to be able to setup different onclickListener inside each item(one for each LinearLayout). I have tried so far to override the onListItemClick, but it doesnt seem to work properly:
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
ViewGroup vg = (ViewGroup)v;
vg.getChildAt(0).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(mCtx, "element1", Toast.LENGTH_SHORT).show();
}
});
vg.getChildAt(1).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(mCtx, "element2", Toast.LENGTH_SHORT).show();
}
});
}
任何想法如何解决这个问题?
Any ideas how to tackle the problem?
感谢。
推荐答案
您必须使用设置 onclicklistener
里面的ListView中的所有元素。
我创建了一个列表视图。设置一个适配器列表视图。我的适配器是reponsible来显示列表视图中的每个元素。所以在 getView()
我将指派onclicklistener所有elemnts我向他们想要得到的单击事件。
You have to use set onclicklistener
to all elements inside ListView.
I have created a listview. set an adapter to the listview. My adapter is reponsible to show each element of the listview. so inside getView()
I will assign onclicklistener to all the elemnts to whom i want to get the click event.
public View getView(int position, View convertView, ViewGroup parent) {
View vi=convertView;
ViewHolder holder;
if(convertView==null){
vi = inflater.inflate(R.layout.item, null);
holder=new ViewHolder();
holder.text=(TextView)vi.findViewById(R.id.text);;
holder.image=(ImageView)vi.findViewById(R.id.image);
vi.setTag(holder);
}
else
holder=(ViewHolder)vi.getTag();
holder.text.setText("item "+position);
holder.image.setTag(data.get(position));
holder.image.setOnClickListener(this);
holder.text.setOnClickListener(this);
imageLoader.DisplayImage(data.get(position), activity, holder.image);
return vi;
}
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
System.out.println("...clicked view is...."+arg0);
}
谢谢 迪帕克
Thanks Deepak
这篇关于设置OnClickListener在ListView中的项目有2个意见的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!