Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/211.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在android的listview中,每5秒点击一次刷新按钮即可显示纬度和经度列表_Android_Google Maps - Fatal编程技术网

在android的listview中,每5秒点击一次刷新按钮即可显示纬度和经度列表

在android的listview中,每5秒点击一次刷新按钮即可显示纬度和经度列表,android,google-maps,Android,Google Maps,嗨,我的应用程序包含一个刷新按钮,我想在android的listview中每5秒显示一次纬度和经度的列表。我已经尝试过这个方法 我的主要课程是:- public class MapdemoActivity extends ListActivity { private ArrayList<MapData> mapdata = new ArrayList<MapData>(); private MapDataAdapter m_adapter; public String

嗨,我的应用程序包含一个刷新按钮,我想在android的listview中每5秒显示一次纬度和经度的列表。我已经尝试过这个方法

我的主要课程是:-

public class MapdemoActivity extends ListActivity
{
private ArrayList<MapData> mapdata = new ArrayList<MapData>();
private MapDataAdapter m_adapter;

public String lng;
public String lat;

private Button retrieveLocationButton;
private LocationManager locationManager;

private static final long MINIMUM_DISTANCE_CHANGE_FOR_UPDATES = 1;  //1 meters
private static final long MINIMUM_TIME_BETWEEN_UPDATES = 5000;      //5 seconds

@Override
public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

retrieveLocationButton = (Button) findViewById(R.id.retrieve_location_button);

    locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    locationManager.requestLocationUpdates(
            LocationManager.GPS_PROVIDER, 
            MINIMUM_TIME_BETWEEN_UPDATES, 
            MINIMUM_DISTANCE_CHANGE_FOR_UPDATES,
            new MyLocationListener()
    );

   this.m_adapter = new MapDataAdapter(this, R.layout.row, mapdata);
    setListAdapter(this.m_adapter);

    **retrieveLocationButton.setOnClickListener(new OnClickListener() 
    {
        @Override
        public void onClick(View v) 
        {

        }
});** 

}

private class MyLocationListener implements LocationListener {

    public void onLocationChanged(Location location) 
    {
         location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);

        if (location != null) 
        {
             lat=Double.toString(location.getLatitude());
             lng=Double.toString(location.getLongitude());

             MapData data = new MapData();

                data.setLatitude(lat);
                data.setLongitude(lng);

             mapdata.add(data);

             Log.i("Lat", mapdata.get(0).Latitude);
             Log.i("Lng", lng+location.getLatitude());
        }
    }

    public void onStatusChanged(String s, int i, Bundle b) {
        Toast.makeText(MapdemoActivity.this, "Provider status changed",
                Toast.LENGTH_LONG).show();
    }

    public void onProviderDisabled(String s) {
        Toast.makeText(MapdemoActivity.this,
                "Provider disabled by the user. GPS turned off",
                Toast.LENGTH_LONG).show();
    }

    public void onProviderEnabled(String s) {
        Toast.makeText(MapdemoActivity.this,
                "Provider enabled by the user. GPS turned on",
                Toast.LENGTH_LONG).show();
    }

}

private class MapDataAdapter extends ArrayAdapter<MapData> 
{

    private ArrayList<MapData> items;

    public MapDataAdapter(Context context, int textViewResourceId, ArrayList<MapData> items) 
    {
            super(context, textViewResourceId, items);
            this.items = items;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) 
    {
            View v = convertView;
            if (v == null) 
            {
                LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                v = vi.inflate(R.layout.row, null);
            }
            MapData o = items.get(position);
            if (o != null)
            {
                    TextView lat = (TextView) v.findViewById(R.id.tt1);
                    TextView lng = (TextView) v.findViewById(R.id.tt2);
                    if (lat != null) 
                    {
                          lat.setText("Latitude: "+o.getLatitude());                           
                    }
                    if(lng != null)
                    {
                          lng.setText("Longitude: "+ o.getLongitude());
                    }
            }
            return v;
    }
}

}
在安卓系统中,应该向onclick of refresh按钮添加哪些内容,以便将更改添加到列表中


有人能帮我吗。

只需调用适配器的notifyDataSetChanged()方法来刷新(通知)列表视图

retrieveLocationButton.setOnClickListener(new OnClickListener() 
    {
        @Override
        public void onClick(View v) 
        {

        MapData data = new MapData();

            data.setLatitude("40.4700");
            data.setLongitude("78.9800");
            mapdata.add(data);

         m_adapter.notifyDataSetChanged();
        }
});

只需调用适配器的notifyDataSetChanged()方法来刷新(通知)listView

retrieveLocationButton.setOnClickListener(new OnClickListener() 
    {
        @Override
        public void onClick(View v) 
        {

        MapData data = new MapData();

            data.setLatitude("40.4700");
            data.setLongitude("78.9800");
            mapdata.add(data);

         m_adapter.notifyDataSetChanged();
        }
});

看看我编辑过的答案。请尝试此操作,并让我知道列表是否显示此值。请查看我编辑的答案。试试这个,让我知道列表是否显示了这个值。我通过走到某个位置尝试了这个方法,它可以工作,但当我按“刷新”时,第一个新位置被添加。它是否正确。否,我只提供示例以检查列表中是否有问题。因此,您的列表和活动非常完美。我认为问题是你们通过了1米的参数,并试图在模拟器上获得位置(若我并没有错的话),所以,位置更新并没有给你们任何值。你的名单仍然是空的。所以,在设备中尝试并测试它。我通过走到某个位置尝试了这个方法,它可以工作,但当我按“刷新”时,第一个新位置会被添加。它是否正确。否,我只提供示例以检查列表中是否有问题。因此,您的列表和活动非常完美。我认为问题是你们通过了1米的参数,并试图在模拟器上获得位置(若我并没有错的话),所以,位置更新并没有给你们任何值。你的名单仍然是空的。所以,在设备中尝试并测试它。