4

選択したアイテムのテキストを取得して、トースト メッセージに表示しようとしています。これは私が書いたコードです:

final ListView lv = (ListView)findViewById(R.id.firstflightlist);
        lv.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                long arg3) {
            TextView c = (TextView) arg0.findViewById(arg1.getId());

            String text = c.getText().toString();
            Toast.makeText(getApplicationContext(), text, Toast.LENGTH_SHORT).show();               
        }});

リストビューは単一選択リストビューです。リスト内の項目をクリックすると、常にリストの最初の項目が表示されます。何が原因でしょうか? 選択したアイテムのテキストを取得するにはどうすればよいですか?

4

4 に答える 4

6

ViewById を見つける必要はありません。クリックしたビューが表示されます。また、findViewById は id に一致する最初のアイテムのみを検索し、リスト ビューでは同じ id のアイテムが多数あるため、最初のアイテムを検索します。

 lv.setOnItemClickListener(new OnItemClickListener() {

    @Override
    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
            long arg3) {


        TextView c = (TextView) arg1; //<--this one 
        String text = c.getText().toString();
        Toast.makeText(getApplicationContext(), text, Toast.LENGTH_SHORT).show();               
    }});
于 2013-06-09T15:03:24.637 に答える
3

を取得してarg0AdapterViewます。arg1クリックされたビューを参照する代わりに取得する必要があります。

String text = ((TextView) arg1).getText();

クリックが発生した AdapterView。
view クリックされた AdapterView 内のビュー (これはアダプターによって提供されるビューになります)
positionアダプター 内のビューの位置。
id クリックされた項目の行 ID。

public abstract void onItemClick (AdapterView<?> parent, 
                                  View view, 
                                  int position, 
                                  long id)

AdapterView.OnItemClickListenerを参照してください。

于 2013-06-09T15:00:20.263 に答える