0

listView のどの項目がクリックされたかに依存する要素にアクセスする必要がある配列があります。

getView() メソッドに送信される最初の int 値、つまり int arg0 は、クリックされた配列の要素の ID ですか? リストビュー onClickListner から ID を割り当てる必要がありますか?

public View getView(int arg0, View arg1, ViewGroup arg2) {
}

次の 2 つのオーバーライドされたメソッドも実装する必要があると思います。

@Override
public Object getItem(int arg0) {
    return null;
}

@Override
public long getItemId(int arg0) {
    return 0;
}

現在、私のアプリでは配列の要素 0 (最初の要素) にしかアクセスできないため、リストビューのどの項目がクリックされても、他の 19 要素は無視されると思います。

private List<GeoName> names = new ArrayList<GeoName>();

@Override
public Object getItem(int arg0) {
    return null;
}

@Override
public long getItemId(int arg0) {
    return 0;
}


@Override
public View getView(int arg0, View arg1, ViewGroup arg2) {

    GeoName location = this.names.get(arg0);

    Location l = location.getGeometry().getLocation();

    Latt = l.getLat();
    Longg = l.getLng();

上記のコードから、name.get() メソッドが呼び出されたときに、「arg0」にエレメント ID 値が自動的に割り当てられるべきでしょうか?

4

2 に答える 2

2

ListView のすべてのアイテムはビューであり、getView は Listview のこれらのビューを作成する責任があります。以下は、Android のドキュメントからの抜粋です。

public abstract View getView (int position, View convertView, ViewGroup parent)

**Parameters**

position:ビューが必要なアイテムのアダプターのデータ セット内のアイテムの位置。 convertView: 可能であれば 、再利用する古いビュー。注: 使用する前に、このビューが null ではなく、適切な型であることを確認する必要があります。このビューを変換して正しいデータを表示できない場合は、このメソッドで新しいビューを作成できます。異種リストはビュー タイプの数を指定できるため、このビューは常に適切なタイプになります (getViewTypeCount() および getItemViewType(int) を参照)。 parent : このビューが最終的にアタッチされる親

以下は、 ListView のリスナーを実装する方法のサンプル コード スニペットです。

lv = (ListView) findViewById(R.id.listview);
lv.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, listview_array));
lv.setOnItemClickListener(new OnItemClickListener()
{
    public void onItemClick(AdapterView<?> arg0, View v, int position, long id)
    {
        AlertDialog.Builder adb = new AlertDialog.Builder(
        ListviewOnclickExample.this);
        adb.setTitle("ListView OnClick");
        adb.setMessage("Selected Item is = "+ lv.getItemAtPosition(position));
        adb.setPositiveButton("Ok", null);
        adb.show();                     
    }
 });

ConvertView および ViewHolder スタイルを使用して Listview を効率的にすることをお勧めします。このスタイルがどのように機能するかを説明する適切なリンクを次に示します。このスタイルの実装から完全なサンプルをダウンロードできますここ

于 2013-02-28T02:00:25.613 に答える
0

getView はクリックとは関係ありません。リストの N 番目の位置のビューを取得します。ここで、N は最初のパラメーターです。ListView 自体によってのみ呼び出され、ListView によってスクロール時にビューを初期化するために使用されます。

于 2013-02-28T01:21:07.620 に答える