java - 通用图像加载器 : Get ImageView Object From Tap

标签 java android baseadapter universal-image-loader

在梳理了 UIL 的示例项目后,我发现了一个障碍。

这是他们的代码为 onItemClickListener 显示的内容。我需要返回 ImageView 对象,而不是 null。

@Override
public Object getItem(int position)
{
    return null;
}

他们实际上并没有从某个位置归还元素。我不能不重写这个方法,但我完全不知道如何返回该项目。我观看了 Google I/O 讨论 ListAdapters ( https://www.youtube.com/watch?v=wDBM6wVEO70 ),他们说不要缓存图像列表,然后根据该列表返回位置(因为当垃圾收集器执行其操作时,您会得到不稳定的行为)。

那么您能告诉我如何从 UIL ImageAdapter(BaseAdapter) 对象获取 ImageView 对象吗?

最佳答案

这不是 UIL 的问题。适配器本身处理数据列表而不是 View 。因此,getItem 给出了数据及其数组索引(代码中的position),而不是您单击的ImageView

要从适配器传递 View 对象,您需要在 ViewHolder OnClick 事件中使用 Listener 传递 ImageView 对象。

首先,定义接口(interface)。

public interface ViewClickListener {
    void onClickView(View view);
}

在您扩充的 View 布局中,添加以下代码。

private ViewClickListener viewClickListener;
public void setViewClickListener(ViewClickListener listener) {
    this.viewClickListener = listener;
}

并且,在适配器 View 中,

    imageView.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View view) {
            if (viewClickListener!= null)
                viewClickListener.onClickView(view);
        }
    });

在包含适配器的类中,

public class SomeActivity implements ViewClickListener  {

    @Override
    public void onCreate(Bundle savedInstanceState, PersistableBundle persistentState) {
        super.onCreate(savedInstanceState, persistentState);
        yourAdapter.setViewClickListener(this); // listens onclick event inside of adapter view.            
    }

    @Override
    onClickView(View view){
          Log.d("Test", view); // your clicked ImageView comes here.
    }
}

关于java - 通用图像加载器 : Get ImageView Object From Tap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30176181/

相关文章:

java - Spring Security 不解密密码,返回 403

java - 如何使用 HttpURLConnection 检查 https

java - 按自定义对象的成员之一对 ArrayList 进行排序

Java无法跳出while循环

android - 如何从 Google Assistant 发出局域网 HTTP 请求?

java - 如何在谷歌地图中使用 latlng 字符串数组绘制多边形

安卓 : MultiChoiceModeListener not invoked inside ListFragment

java - 从Service类中的BaseAdapter获取数据

Android Listview 项目重复添加具有不同数据的新项目

java - 在 Java 8 中迭代 2 个对象和 1 个嵌套对象