【问题标题】:how to get the element clicked in the listview (Android)如何获取在列表视图中单击的元素(Android)
【发布时间】:2017-04-10 09:58:50
【问题描述】:
  • 我有一个 ListView lvResults
  • 我有一个为 ListView 注册的自定义 ArrayAdapter:

    lvResults.setAdapter(arrayadapter);

  • 适配器包含 4 个元素,其中最后一个是图标。

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

最后一行是这样的:

如何判断图片(worldicon)是否被点击?

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

lvResults.setOnItemClickListener(new OnItemClickListener() {

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

});

有人可以帮忙吗?

【问题讨论】:

  • 请不要在提出建议之前对提问者的问题投反对票
  • 非常感谢拉文德拉。我无法理解,为什么他们投反对票。请投反对票的人,请说明你投反对票的原因。
  • 可能投反对票比给出答案容易得多:P
  • 大多数人甚至在阅读整个问题之前就投了反对票。
  • @mcflysoft ..我没有得到你的问题..刚刚给出的建议是选择或不选择 Listview 项目:|

标签: android listview onitemclicklistener


【解决方案1】:

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;
}

希望这会有所帮助。

【讨论】:

  • 赞成。你的答案是 4 分钟前,你是对的。对不起。
  • 这不是正确的方法,因为每个视图都会膨胀一个实例,如果列表太大,将来可能会出现内存泄漏,正确的方法是用接口实现点击
【解决方案2】:

将 onclick 侦听器添加到数组适配器中的该图像视图。 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
            }
        });

【讨论】:

  • 谢谢。为了通知相应的活动,我必须先在适配器中设置活动。谢谢你的帮助。
  • 对不起Faa。刚刚意识到,Tahsinrupan 更早。但仍然赞成:-)
【解决方案3】:

如果你想为世界图标添加 onclick 监听器。在自定义适配器本身中,您需要将 onclick 侦听器添加到世界图标的图像视图。您可以为 imageview 提供 id 或 tag 以识别单击了哪个世界图标。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-26
    相关资源
    最近更新 更多