0

ID text1 と text2 の 2 つの TextView を持つカスタム リストビューを作成しました。text1 は場所を示し、text2 は説明を示します。最初に onListItemClicked メソッドを実装し、データをトーストにフィードすると、text1 の場所である最初のテキストビューにデータが表示されました。テキスト 2 から抽出したいので、S/O で誰かが提案した回答が見つかりましたが、クリックした場所ではなく、最初のリスト項目の text2 からのみデータを抽出します。データを動的に取得する方法はありますか? データ ソースに慣れていないため、すべてのデータが 2 つの配列にある、または説明を保持する 2 番目の配列からその位置のデータを取得する方法がありませんか?
カスタム リスト クラスのコード:

@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
    View parentView =(View)v.getParent();
    String text;
    text=((TextView) parentView.findViewById(R.id.text2)).getText().toString();
        Toast.makeText(this, text+" !here(description)",
        Toast.LENGTH_LONG).show();
}
4

1 に答える 1

3

onListItemClickのView vは、クリックした行のViewGroupを表します。したがって、 getParentメソッドは必要ありません。コードを次のように変更します。

@Override
protected void onListItemClick(ListView l, View v, int position, long id)
{
    String text;
    text=((TextView) v.findViewById(R.id.text2)).getText().toString();
    Toast.makeText(this, text+" !here(description)", Toast.LENGTH_LONG).show();
}

あなたが持っているように、parentViewはListViewのビュー階層全体を参照します。その中には、id == R.id.text2 の TextView をそれぞれ含む複数のビューがあります。findViewById は、その階層で最初に見つかったものを取得するだけだと思います。これが、常に最初の行から値を返す理由です。

于 2013-10-20T08:19:13.457 に答える