AndroidAnnotations:如何访问@ItemClick 上的视图

AndroidAnnotations: how to access View on @ItemClick

我使用 AndroidAnnotations 构建 Android 应用程序。但我不知道如何在下面重构它以使用 @ItemClick 因为 @ItemClick 不接受 View 参数。顺便说一句,我使用 View 来获取所选 GridView.

的标签
gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
       @Override
       public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
           String url = (String) view.getTag();
           intents.put("image", url);

           DetailActivity_.launch(HomeActivity.this, view.findViewById(R.id.image), intents);
       }
 });

有什么想法吗?

您无法检索带有 @ItemClick 注释的视图,而是所选项目本身。

@ItemClick(R.id.yourgrid_id)
void itemClicked(Object item) {

//DO SOMETHING
}

item 类型取决于您的网格适配器。

很遗憾,您不能添加 View 参数,但可以使用位置参数。问题是没有 return 单击的 View 的方法,因此您必须使用一些逻辑从所有 children.[=17= 中获取 View ]

@ViewById(R.id.gridViewId)
GridView gridView;

@ItemClick(R.id.gridViewId)
void itemClicked(int position) {
    int firstPosition = gridView.getFirstVisiblePosition();
    int lastPosition = gridView.getLastVisiblePosition();

    View clickedView;

    if ((position < firstPosition) || (position > lastPosition))
        clickedView = null;

    clickedView = gridView.getChildAt(position - firstPosition);
    // do sg with clicked view
}

但这实际上不如您没有 AA 的代码干净...但是,View 参数可能受支持 soon。在那之前,如果你真的必须使用 View 参数,我建议坚持使用旧方法。