2012-04-22 18 views
0

私はListViewを持っています。リストビューには、各項目のテキストとピクチャが含まれています(実際には行です)。そのうちの1つをクリックすると、リスナーがトリガーされてダイアログが開きます。ダイアログ内のListViewから値を取得する方法

ダイアログボックスに表示される内容は、ListViewの項目から取得されます。いくつかの方法を試しましたが、渡されたパラメータはすべてnullポインタです。

私は、listviewのレイアウトにあるhotelNameの値を取得しようとしています。そのTextViewのIDはR.id.nameTVです

final Context context = this; 

public void onCreate(Bundle blabla){ 

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

    listView.setOnItemClickListener(new OnItemClickListener() { 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 

      final Dialog dialog = new Dialog(context); 

      // this is the TextView in Dialog to hold the content from ListView 
      TextView dHotelTV = (TextView)findViewById(R.id.hotelNameTV); 

      CharSequence hotelName; 
      /* 
       The way I tried: 
       hotelName = context.getText(R.id.nameTV); 
       hotelName = view.findViewById(R.id.nameTV); 

      */ 

      dialog.setTitle("EasyTrip"); 
      dialog.setContentView(R.layout.dialog); 
      dHotelTV.setText(hotelName) 

    } 
} 

これらのメソッドのhotelNameはすべてnullポインタです。それは私を夢中にさせる。

私は間違っていますか?

答えて

1

プルそれは:dHotelTVは、ダイアログ内の要素である場合

hotelName = ((TextView) view.findViewById(R.id.my_important_textview)).getText(); 

また、あなたはそれが活動にfindViewByIdを使用して見つけることするつもりはない、とあなたは別のNullPointerExceptionが得られます。

dialog.setContentView(R.layout.dialog); 
TextView dHotelTV = (TextView)dialog.findViewById(R.id.hotelNameTV); 

findViewById()はスコープがあることに注意してください - それは子供のみを検索します。だから、あなたは、各項目がこのレイアウトで定義されたListViewがある場合:

((TextView) view.findViewById(R.id.my_important_textview)).getText(); 

コールは、あなたがクリックした項目にスコープされています。あなたはその項目にfindViewById()を呼び出す場合、その後

<LinearLayout 
    ... 
> 
    <TextView 
    ... 
    android:id="@+id/my_important_textView" /> 
    <TextView 
    ... 
    android:id="@+id/other_textview" /> 
</ LinearLayout> 

を。

+0

ビューにはホテル名以上の情報が含まれています。それは他のtextviews – ssb

+0

を持っているので、あなたがデータを望むtextviewのidは何ですか?上記の編集を参照してください – JRaymond

+0

2番目のヒントは本当に役立ちます!しかし、hotelName =((TextView)findViewById(R.id.my_important_textview))。getText()では、 "my_important_textview"が選択されていることをどのように知ることができますか? – ssb

0

hotelNameListAdapterから入手できます。 TextViewから

関連する問題