[英]Android ListView Item Selected Event
我试图根据从列表视图中选择的项目在标记上弹出一个信息窗口。 因此,基本上,当选择listview项目时,它将执行createCallOutView():
listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View item,
int position, long id) {
float x = Float.parseFloat(_eventlist.get(position).getEventX());
float y = Float.parseFloat(_eventlist.get(position).getEventY());
ENeighbourhoodActivity.callout.hide();
int[] graphicIDs = ENeighbourhoodActivity.graphicsLayer.getGraphicIDs(x, y, 25);
if (graphicIDs != null && graphicIDs.length > 0) {
Graphic gr = ENeighbourhoodActivity.graphicsLayer.getGraphic(graphicIDs[0]);
Point location = (Point) gr.getGeometry();
ENeighbourhoodActivity.callout.setOffset(0, -10);
ENeighbourhoodActivity.callout.show(location, EventInfoWindow.createCalloutView(
gr, context, userID));
}
getActivity().finish();
}
});
在我的createCallOutView()中,它基本上只是显示事件详细信息。 但是,使用这些代码,选择了listview项后,屏幕将冻结,并且过一会儿它仅显示应用程序未响应消息并关闭活动。
有任何想法吗? 根本没有错误消息。 提前致谢。
可能是您的代码在“图形”部分花费了更多时间。 Pt in另一个线程,以便不停止主线程。
listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View item,
int position, long id) {
new Thread(new Runnable() {
@Override
public void run() {
float x = Float.parseFloat(_eventlist.get(position).getEventX());
float y = Float.parseFloat(_eventlist.get(position).getEventY());
ENeighbourhoodActivity.callout.hide();
int[] graphicIDs = ENeighbourhoodActivity.graphicsLayer.getGraphicIDs(x, y, 25);
if (graphicIDs != null && graphicIDs.length > 0) {
Graphic gr = ENeighbourhoodActivity.graphicsLayer.getGraphic(graphicIDs[0]);
Point location = (Point) gr.getGeometry();
ENeighbourhoodActivity.callout.setOffset(0, -10);
ENeighbourhoodActivity.callout.show(location, EventInfoWindow.createCalloutView(
gr, context, userID));
}
getActivity().finish();
}
}).start();
}
});
要更新UI时,请不要忘记使用runOnUiThread
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.