0

下面是我设置列表视图的代码。我想在列表视图上实现一个点击事件,但它不起作用。我已经在清单中为列表视图设置了可点击属性。此外,我的列表视图位于相对布局内,而此相对布局位于线性布局中。我的 list_details 在相对布局中有 textview 和 imageview。你能帮我解决这个问题吗?提前致谢。

public class ListImageBaseAdapter extends BaseAdapter {
...

public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder;
    if (convertView == null) {
        convertView = l_Inflater.inflate(R.layout.list_details, null);
        holder = new ViewHolder();
        holder.txt_itemName = (TextView) convertView.findViewById(R.id.name);
        holder.itemImage = (ImageView) convertView.findViewById(R.id.photo);

        convertView.setTag(holder);
    } else {
        holder = (ViewHolder) convertView.getTag();
    }

        System.out.println(titles.length);

        holder.txt_itemName.setText(titles[position]);
        holder.itemImage.setImageResource(imgid[position]);

            holder.itemImage.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            System.out.println("here1");
        }
    });

    holder.txt_itemName.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            System.out.println("here2");
        }
    });


    return convertView;
}
...
4

3 回答 3

1
 I want to implement a click event on the listview, but it is not working. 

检查两件事

1-你有没有以这种方式实现列表点击?

 list.setOnItemClickListener(new OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                        // @todo
                }
        }); 

2-如果是的话,列表行中是否有任何可点击的项目,然后参考

Android:具有多个可点击按钮的 ListView 元素

http://mylifewithandroid.blogspot.in/2011/08/focus-problems-with-list-rows-and.html

用于处理对行中项目的点击:

1- Imaplent you activity with View.OnClickListener
2- Pass it to adpter 
3- holder.itemImage.setOnClickListener(mActivity)
4- override the View.OnClickListener in activity 
于 2012-06-15T13:11:35.323 回答
1

你有几个选择。

您可以在 getView() 方法中返回 convertView 之前应用侦听器。像这样:

public View getView(int position, View convertView, ViewGroup parent) {
    .....
    convertView.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

        }
    });

    return convertView;
}

或者(正如@DheereshSingh 提到的)您可以在包含ListView 的Activity 内部从上一层完成此操作。

ListView lv = (ListView)findViewById(R.id.listView);
lv.setOnItemClickListener(new OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

    }
}); 
于 2012-06-15T13:18:52.760 回答
0

如果您使用的是列表视图,您始终可以使用 Dheeresh 的方法。

如果您只是在寻找 onclick,您也可以使用

View view = convertView;
view.setTag(position);//Sets a position
view.setonclicklistener(new OnClickListener){//creates a onClicklistener for tag

public void onClick(View v){
//Do something
}

}

您也可以将其用于网格视图。

如果您想做额外的事情,您实际上可以将 baseadapter 中的每个项目设置为每次都有点击事件来执行不同的操作。

于 2012-06-15T13:52:25.177 回答