如何在列表视图(Android)中单击该元素

时间:2017-04-10 09:58:50

标签: android listview onitemclicklistener

  • 我有一个ListView lvResults
  • 我有一个Custom ArrayAdapter,我注册了ListView:

    lvResults.setAdapter(arrayadapter);

  • 适配器包含4个元素,最后一个是Icon。

  • 适配器有一个public View getView(int position, View convertView, ViewGroup parent)方法,我为每一行创建了视图。

这行最后看起来像这样: enter image description here

如何确定是否点击了图像(worldicon)?

我开始在onItemClick方法中尝试这个,但我不知道:

lvResults.setOnItemClickListener(new OnItemClickListener() {

    @Override
    public void onItemClick(AdapterView<?> adapter, View v, int position, long id) {
    }

});

有人可以帮忙吗?

3 个答案:

答案 0 :(得分:4)

getView()方法内的自定义适配器中,使用Holder并将onClickLister设置为ImageView。试试下面的代码:

 public class Holder
{
    ImageView world;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
    // TODO Auto-generated method stub
    final Holder holder=new Holder();
    View rowView;       
         rowView = inflater.inflate(R.layout.single_row, null);
         holder.world = (ImageView) rowView.findViewById(R.id.world_icon); 

     holder.world.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
              // do your onClick action here
        }
     });       

    return rowView;
}

希望这有帮助。

答案 1 :(得分:2)

将onclick侦听器添加到阵列适配器中的该imageview。 itemview单击侦听器无法标识项目中的每个元素。

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

            convertView = layoutInflater.inflate(layout.your_layout,null);
            holder.worldImage = (ImageView) convertView.findViewById(id.world_image);
holder.worldImage.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
            // perform necessary action
            }
        });

答案 2 :(得分:0)

如果要将onclick侦听器添加到世界图标。在自定义适配器本身,您需要将onclick监听器添加到世界图标的imageview。您可以为imageview指定ID或标记,以识别单击的世界图标。