簡體   English   中英

Android ListView項目選定事件

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM