0

場所のリストがあります

ArrayList<Location> locationList;

各場所には、名前、住所、説明などの情報が含まれています...各行に名前のみを表示したいので、新しいインテントでより多くの情報を受け取りたい場所を選択できます。

このコードを使用して、ListViewに文字列を表示することができました。

    locationNames= new String[]{"I","am", "a", "ListView"};

    setListAdapter(new ArrayAdapter<String>(this, R.layout.singleitem,
            locationNames));
    ListView locationListview;
    locationListview = getListView();
    locationListview.setTextFilterEnabled(true);

これは今のところ機能しますが、このlistViewにリストの内容を表示することも、クリックされた行に関する詳細情報を要求することもできません。

リストの最初の要素を読み取って、文字列配列に保存することを考えました。これにより、クリックして詳細情報を取得するときに問題が発生します。

これを行うための最良の方法は何ですか?

よろしくお願いいたします。Wolfen

4

2 に答える 2

1

これがあなたが求めているものかどうかはわかりません。

次のように、場所の名前を文字列配列に入れます。

String names[] = new String[locationList.size()];

int i=0;
for( Location loc:locationList )
{
    names[i] = loc.name;
    i++;
}

次に、アダプタnamesの代わりにこのアレイを使用します。locationNames

setListAdapter(new ArrayAdapter<String>(this, R.layout.singleitem, names));

最後に、アイテムクリックイベントを取得するために、リスナーをリストに設定します。

    locationListview.setOnItemClickListener( new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) 
        {
            // Read your location information using the position parameter
            Location l = locationList.get( position );

            // Show the rest of the location info ...

        }               
    });
于 2012-06-02T22:28:08.887 に答える
0

このようなもの:

Location[] locationArray = new Location[locationList.size()];
locationList.toArray(locationArray); 
setListAdapter(new ArrayAdapter<Location>(this, R.layout.singleitem,
locationArray));

LocationのtoString()メソッドをオーバーライドして、場所の名前を返します。Locationクラスを自分で作成しなかった場合は、toString()メソッドをオーバーライドするサブクラスを作成する必要があります。

于 2012-06-03T00:01:27.417 に答える