2011-01-04 18 views
0

現在、リストビューにはいくつかの文字列配列が表示されています。私はリストビュー内の行にボタンを追加することが可能かどうか誰もが知っていたのだろうかと疑問に思っていたので、クリックするとマップ画面がロードされるようになりました。クラスのための私のコードがあるAndroid - リストビューにボタンを追加してMapViewを表示

は、以下 -

はすべての夜にこれをしようとして、正常に私のセットアップを

任意のアイデアやヒントをこれを達成する方法を発見していない

class Taxi { 
    private String taxiName; 
    private String taxiAddress; 
    private String taxiDist; 

    public String getName() { 
     return taxiName; 
    } 

    public void setName(String name) { 
     taxiName = name; 
    } 

    public String getAddress() { 
     return taxiAddress; 
    } 

    public void setAddress(String address) { 
     taxiAddress = address; 
    } 
    public String getDist() { 
     return taxiDist; 
    } 
    public void setDist(String dist){ 
     taxiDist = dist; 
    } 
    public Taxi(String name, String address, String dist) { 
     taxiName = name; 
     taxiAddress = address; 
     taxiDist = dist; 
    } 
} 

public class TaxiAdapter extends ArrayAdapter<Taxi> { 
    private ArrayList<Taxi> items; 
    private TaxiViewHolder taxiHolder; 

    private class TaxiViewHolder { 
     TextView name; 
     TextView address; 
     TextView dist; 
    } 

    public TaxiAdapter(Context context, int tvResId, ArrayList<Taxi> items) { 
     super(context, tvResId, items); 
     this.items = items; 
    } 

    @Override 
    public View getView(int pos, View convertView, ViewGroup parent) { 
     View v = convertView; 
     if (v == null) { 
      LayoutInflater vi = (LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE); 
      v = vi.inflate(R.layout.taxi_list_item, null); 
      taxiHolder = new TaxiViewHolder(); 
      taxiHolder.name = (TextView)v.findViewById(R.id.taxi_name); 
      taxiHolder.address = (TextView)v.findViewById(R.id.taxi_address); 
      taxiHolder.dist = (TextView)v.findViewById(R.id.taxi_dist); 
      v.setTag(taxiHolder); 
     } else taxiHolder = (TaxiViewHolder)v.getTag(); 

     Taxi taxi = items.get(pos); 

     if (taxi != null) { 
      taxiHolder.name.setText(taxi.getName()); 
      taxiHolder.address.setText(taxi.getAddress()); 
      taxiHolder.dist.setText(taxi.getDist()); 
     } 

     return v; 
    } 
} 

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

    final String[] taxiNames = getResources().getStringArray(R.array.taxi_name_array); 
    final String[] taxiAddresses = getResources().getStringArray(R.array.taxi_address_array); 
    final String[] taxiDist = getResources().getStringArray(R.array.taxi_array_dist); 
    ArrayList<Taxi> taxiList = new ArrayList<Taxi>(); 

    for (int i = 0; i < taxiNames.length; i++) { 
     taxiList.add(new Taxi(taxiNames[i], taxiAddresses[i], taxiDist[i])); 

    } 


    setListAdapter(new TaxiAdapter(this, R.layout.taxi_list_item, taxiList)); 

    final ListView lv = getListView(); 
    lv.setTextFilterEnabled(true); 

     lv.setOnItemClickListener(new OnItemClickListener() { 
     public void onItemClick(AdapterView<?> a, View v, final int position, long id) 
     {  

      final int selectedPosition = position; 
      AlertDialog.Builder adb=new AlertDialog.Builder(ListTaxi.this); 
      adb.setTitle("Taxi Booking"); 
      adb.setMessage("You Have Selected: "+taxiNames[selectedPosition]); 
      adb.setPositiveButton("Book", new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int id) { 
        Intent intent = new Intent(ListTaxi.this, Booking.class); 
        intent.putExtra("booking", taxiNames[selectedPosition]); 
        intent.putExtra("address", taxiAddresses[selectedPosition]); 
        intent.putExtra("distance", taxiDist[selectedPosition]); 
        startActivity(intent); 
       } 
      }); 
      adb.setNegativeButton("Cancel", null); 
      adb.show(); 
     } 
    }); 



} 

}素晴らしいだろう!

おかげでみんな

答えて

1

リストの各行のビューをカスタマイズすることができ、独自のListAdapterを追加する必要があります。この例をチェックアウト:

http://www.softwarepassion.com/android-series-custom-listview-items-and-adapters/

あなたの代わりに画像のボタンがあるでしょう、あなたの行を定義し、あなたの視野の中に。次に、ビューを展開するときに、アダプタからボタンにリスナを追加します。それは本当に簡単です。

+0

ありがとうございます。病気に撃たれ、どうやったらどうなるか教えてください – Oli

関連する問題