2012-04-22 2 views
0

각 항목에 대한 텍스트와 그림이 포함 된 ListView가 있습니다 (실제로 행입니다). 그 중 하나를 클릭하면 리스너가 트리거되고 대화 상자가 열립니다.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()은 범위를 지정합니다. 이는 단지 아동을 찾습니다. 그래서 당신은 각 항목이 레이아웃에 의해 정의 된 목록보기가있는 경우 :

((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

두 번째 힌트가 정말 도움이됩니다! 그러나 hotelName = ((TextView) findViewById (R.id.my_important_textview)). getText(), "my_important_textview"가 선택된 것임을 어떻게 알 수 있습니까? – ssb

0

hotelNameListAdapter에서 얻을 수 있습니다. 텍스트 뷰에서

관련 문제