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
参数,我建议坚持使用旧方法。
我使用 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
参数,我建议坚持使用旧方法。