Display address from Geocoder.getFromLocationName() in a ListView

Thảo luận trong 'Điện thoại, viễn thông' bắt đầu bởi bka15, 30/9/12.

  1. bka15 New Member

    bka15

    Tham gia ngày:
    18/7/12
    Bài viết:
    128
    Đã được thích:
    105
    Điểm thành tích:
    0
    The last post show how to Get full address from result of getFromLocationName(). In this example show you how to show it in a ListView, instead of showing in TextView.


    [​IMG]


    PHP:
    package com.AndroidgetFromLocationName;
     
    import java.io.IOException;
    import java.util.List;
     
    import android.app.Activity;
    import android.content.Context;
    import android.location.Address;
    import android.location.Geocoder;
    import android.os.Bundle;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.ArrayAdapter;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.ListView;
    import android.widget.TextView;
    import android.widget.Toast;
     
    public class 
    AndroidgetFromLocationNameActivity extends Activity {
     
    EditText searchText;
    Button searchButton;
    ListView listviewResult;
     
    Geocoder myGeocoder;
    final static 
    int MAX_RESULT 10;
    final static 
    String DEFAULT_SEARCH "谷歌";
     
      
    /** Called when the activity is first created. */
      
    @Override
      
    public void onCreate(Bundle savedInstanceState) {
          
    super.onCreate(savedInstanceState);
          
    setContentView(R.layout.main);
          
    searchText = (EditText)findViewById(R.id.searchtext);
          
    searchText.setText(DEFAULT_SEARCH);
       
    searchButton = (Button)findViewById(R.id.searchbutton);
       
    listviewResult = (ListView)findViewById(R.id.listviewresult);
       
       
    searchButton.setOnClickListener(searchButtonOnClickListener);
       
       
    myGeocoder = new Geocoder(this);
       
       
    //for API Level 9 or higher
       
    if (!Geocoder.isPresent()){
        
    Toast.makeText(AndroidgetFromLocationNameActivity.this,
        
    "Sorry! Geocoder service not Present.",
        
    Toast.LENGTH_LONG).show();
       }
      }
     
      
    Button.OnClickListener searchButtonOnClickListener
      
    = new Button.OnClickListener(){
     
     @
    Override
     
    public void onClick(View arg0) {
      
    // TODO Auto-generated method stub
      
    String searchString searchText.getText().toString();
      
    searchFromLocationName(searchString);
     }};
     
    private 
    void searchFromLocationName(String name){
     try {
      List<
    Addressresult
      
    myGeocoder.getFromLocationName(nameMAX_RESULT);
      
      if ((
    result == null)||(result.isEmpty())){
       
    Toast.makeText(AndroidgetFromLocationNameActivity.this,
         
    "No matches were found or there is no backend service!",
         
    Toast.LENGTH_LONG).show();
      }else{
     
       
    MyArrayAdapter adapter = new MyArrayAdapter(this,
             
    android.R.layout.simple_list_item_1result);
       
    listviewResult.setAdapter(adapter);
       
       
    Toast.makeText(AndroidgetFromLocationNameActivity.this,
         
    "Finished!",
         
    Toast.LENGTH_LONG).show();
      }
     
      
     } catch (
    IOException e) {
      
    // TODO Auto-generated catch block
      
    e.printStackTrace();
      
    Toast.makeText(AndroidgetFromLocationNameActivity.this,
        
    "The network is unavailable or any other I/O problem occurs!",
        
    Toast.LENGTH_LONG).show();
     }
    }
     
    public class 
    MyArrayAdapter extends ArrayAdapter<Address> {
     
    Context mycontext;
     public 
    MyArrayAdapter(Context contextint textViewResourceId,
       List<
    Addressobjects) {
      
    super(contexttextViewResourceIdobjects);
      
    // TODO Auto-generated constructor stub
      
    mycontext context;
     }
     
     @
    Override
     
    public View getView(int positionView convertViewViewGroup parent) {
      
    // TODO Auto-generated method stub
      
      
    int maxAddressLineIndex getItem(position).getMaxAddressLineIndex();
      
    String addressLine "";
      
      for (
    int j 0<= maxAddressLineIndexj++){
       
    addressLine += getItem(position).getAddressLine(j) + ",";
      }
      
      
    TextView rowAddress = new TextView(mycontext);
      
    rowAddress.setText(addressLine);
      
      return 
    rowAddress;
     
     }
     
    }
     
    }
    PHP:
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
      android:orientation="vertical"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"
      >
    <TextView
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:text="@string/hello"
      />
    <EditText
      android:id="@+id/searchtext"
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      />
    <Button
      android:id="@+id/searchbutton"
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:text="Search"
      />
    <ListView
    android:id="@+id/listviewresult"
    android:layout_width="fill_parent"
      android:layout_height="wrap_content"
    />
    </LinearLayout>
    next post:
    - get latitude and longitude from android.location.Address
     
    2 people like this.
    Đang tải...
  2. nguyenson.glhd New Member

    nguyenson.glhd

    Tham gia ngày:
    8/4/13
    Bài viết:
    31
    Đã được thích:
    0
    Điểm thành tích:
    0
    Giới tính:
    Nam
    Bài viết hay.
     

Chia sẻ trang này