【问题标题】:Universal Image Loader: Get ImageView Object From Tap通用图像加载器:从 Tap 获取 ImageView 对象
【发布时间】:2015-05-11 19:34:39
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: java android baseadapter universal-image-loader


    【解决方案1】:

    这不是 UIL 的问题。 adapter 本身处理数据列表而不是视图。所以,getItem 给出了数据及其数组索引(代码中的position),而不是你点击的ImageView

    要从适配器传递View 对象,您需要在ViewHolder OnClick 事件中将ImageView 对象与Listener 一起传递。

    首先,定义接口。

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

    在您膨胀的视图布局中,添加以下代码。

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

    而且,在适配器视图中,

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-08-14
      • 1970-01-01
      • 1970-01-01
      • 2012-02-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多