0

リストビューで近くの住所を一覧表示するアプリを作成していますが、何らかの理由で住所がリストに表示されません。アドレス コレクションに何か不足していますか? ...

for ループ内で発生します。取得した住所のリストを読み取って、番地や郵便番号など、ごちゃごちゃした数字ではなく、必要なビットだけに必要な情報をトリミングする必要があります。

ただし、アプリを実行するたびに、リストは空白のままです。

package com.atonea.ps;


import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Locale;

import android.app.Activity;
import android.content.Context;
import android.location.Address;
import android.location.Criteria;
import android.location.Geocoder;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

public class PSActivity extends Activity {
protected static final Location Location = null;
/** Called when the activity is first created. */
String location_text="";
String here="";
final ArrayList<String> addressbook = new ArrayList<String>();


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

    Button goButton = (Button) findViewById(R.id.beginButton);
    LocationManager locationManager; 
    String context = Context.LOCATION_SERVICE; 
    locationManager = (LocationManager)getSystemService(context); 

    Criteria crta = new Criteria(); 
    crta.setAccuracy(Criteria.ACCURACY_FINE); 
    crta.setAltitudeRequired(false); 
    crta.setBearingRequired(false); 
    crta.setCostAllowed(true); 
    crta.setPowerRequirement(Criteria.POWER_LOW); 
    String provider = locationManager.getBestProvider(crta, true);  
    Location location = locationManager.getLastKnownLocation(provider); 
    updateWithNewLocation(location);

    goButton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
        }

    });         



}
private void updateWithNewLocation(Location location) { 
    String latLong; 
    TextView uhoh = (TextView) findViewById(R.id.texty);

    ListView listview = (ListView) findViewById(R.id.listview1);
    ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, addressbook);
    listview.setAdapter(arrayAdapter);

    String addressString = "no address found"; 
    Address fulladdress;
    String street;
    String zip;
    String addresstogether;

    if(location!=null) { 
    double lat = location.getLatitude(); 
    double lon = location.getLongitude(); 
    latLong = "Lat:" + lat + "\nLong:" + lon; 

    double lattitude = location.getLatitude(); 
    double longitude = location.getLongitude();     
    Geocoder gc = new Geocoder(this,Locale.getDefault()); 

    try { 
    List addresses= gc.getFromLocation(lattitude, longitude, 1); 

    if(addresses.size()>0) { 
        for (int a = 0; a > 6; a++) {
            fulladdress = ((Address) addresses.get(a));
            street = fulladdress.getAddressLine(a);
            zip = fulladdress.getPostalCode();
            addresstogether = street+" "+zip;
            addressbook.add(a, addresstogether);
            arrayAdapter.notifyDataSetChanged();
            Toast.makeText(getApplicationContext(),addresstogether, Toast.LENGTH_LONG).show();
            }
        } 
    } catch (Exception e) { 
    } 
    } else { 
    latLong = " NO Location Found "; 
    } 

    uhoh.setText("your Current Position is :\n" +latLong + "\n " + addressString ); 
    } 
}
4

2 に答える 2

8
for (int a = 0; a > 6; a++) {

このループに入ることは決してありません。常に 6 より小さい 0 から始めます。

于 2012-07-05T05:20:45.183 に答える
1

この条件for (int a = 0; a > 6; a++)は正しくありません。

初期化a with 0してからチェックa > 6すると、常に false になり、プログラムがループに入ることはありません。

のためでなければなりません(int a = 0; a < 6; a++)

于 2012-07-05T05:24:07.057 に答える