2012-04-22 56 views
0

我有一个ListView,其中包含一些文本和每个项目(实际上是行)的图片。当我点击其中的一个时,它会触发一个监听器并打开一个对话框。如何从ListView中获取对话框中的值

对话框中显示的内容是从ListView中的项目中检索的。我尝试了几种方法,但传入的参数都是空指针。

说,我试图得到在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都是空指针。它让我疯狂。

我在做什么错?

回答

1

将其拉出的TextView:

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

而且,如果dHotelTV是在对话框中的元素,你不会找到在活动中使用findViewById它,你会得到另一个NullPointerException异常:

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

请注意,findViewById()是作用域 - 它只查找儿童。所以,如果你有其中每个项目是通过这样的布局定义一个ListView:

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

然后如果你在该项目上调用findViewById()

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

调用的作用域是你点击的项目。

+0

查看包含比酒店名称更多。它有其他textviews – ssb 2012-04-22 18:20:32

+0

所以你想要的数据从textview的id是什么?见上面编辑 – JRaymond 2012-04-22 18:21:44

+0

第二个提示是真的有帮助!但是,对于hotelName =((TextView)findViewById(R.id.my_important_textview))。getText(),我怎么能知道“my_important_textview”是选定的? – ssb 2012-04-22 18:28:50

0

您可以从ListAdapter获得hotelName

相关问题