[英]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.