2014-09-03 51 views
0

我创建其中包含一个ListView的片段unity_viewAndroid的碎片和ListView适配器问题

<ListView 
    android:id="@+id/listViewUnity" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_centerVertical="true" 
    android:layout_marginLeft="90dp" 
    android:layout_toRightOf="@+id/firstName" > 
</ListView> 

下面的代码(类扩展片段)生成一个空例外:

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
    Bundle savedInstanceState) { 

    // If activity recreated (such as from screen rotate), restore 
    // the previous article selection set by onSaveInstanceState(). 
    // This is primarily necessary when in the two-pane layout. 
    if (savedInstanceState != null) { 
     mCurrentPosition = savedInstanceState.getInt(ARG_POSITION); 
    } 

    final ListView listview = (ListView) this.getActivity().findViewById(R.id.listViewUnity); 
    String[] values = new String[] { "Android", "iPhone", "WindowsMobile", 
     "Blackberry", "WebOS", "Ubuntu", "Windows7", "Max OS X", 
     "Linux", "OS/2", "Ubuntu", "Windows7", "Max OS X", "Linux", 
     "OS/2", "Ubuntu", "Windows7", "Max OS X", "Linux", "OS/2", 
     "Android", "iPhone", "WindowsMobile" }; 

    final ArrayList<String> list = new ArrayList<String>(); 
    for (int i = 0; i < values.length; ++i) { 
     list.add(values[i]); 
    } 
    final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this.getActivity(), 
     android.R.layout.simple_list_item_activated_1); 
    listview.setAdapter(adapter); 

    // Inflate the layout for this fragment 
    return inflater.inflate(R.layout.unity_view, container, false); 
} 

两个问题:

  1. 你知道为什么listview.setAdapter失败吗?
  2. 我不应该在android.R.layout中包含listViewUnity作为选项吗?

回答

0

首先你找不到android.R.layout.listViewUnity,因为android.R.layout是你不能修改的内部android布局。相反,您可以使用R.layout.listViewUnity访问您自己的布局。

其次你的ListView位于你的片段的布局(unity_view.xml)。从代码中访问它 首先需要被夸大:

View layout = inflater.inflate(R.layout.unity_view, container, false); 
final ListView listview = (ListView) findViewById(R.id.listViewUnity); 
// Do something else 

return layout; 

最后,当你创建适配器与您的物品传递活动为背景一起沿着使它们在列表填充:

final ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), 
     android.R.layout.simple_list_item_1, list); 
0

您正在尝试从Activity获取ListView,但它的编号为Fragment。试试这个:

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.unity_view, container, false); 

    final ListView listview = (ListView) view.findViewById(R.id.listViewUnity); 
    // Do something with your ListView 

    return view; 

}

据我所知,目前在Android SDK没有listViewUnity布局。

+0

是的,这是一个自定义列表。谢谢! – 2014-09-04 17:56:54