繁体   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