我们有 MainActivity.class , activity_main.xml 和 firstlayout.xml。
在 firstlayout.xml 中有一个listview
。我在 MainActivity.class ,我想访问我的listview.
当我的listview
位于另一个 .xml 文件中时,我该怎么做?
像
这样的东西ListView lstview =(ListView)findViewById(R.id.lstview)
不起作用,因为我得到了
null引用错误
因为我的listview不在mainactivity.xml中。我也试过
的setContentView(R.layout.firstlayout)
但它也没有用。
How can I access a xml file which is NOT in main_activity.xml ?
答案 0 :(得分:2)
在mainActivity中使用ListView有两种可能的方法。
1)您只需将该布局( firstlayout.xml )包含在 activity_main.xml 文件中即可。
示例:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/app_bg"
android:gravity="center_horizontal">
<include layout="@layout/firstlayout"/>
<TextView android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
android:padding="10dp" />
2)第二个选项是Layout Inflater。您只需将其他布局文件直接添加到您的java文件中即可。
LayoutInflater inflater = LayoutInflater.from(getContext());
inflater.inflate(R.layout.firstlayout, this);
答案 1 :(得分:1)
您可以使用布局inflater对视图进行充气:
getLayoutInflater().inflate(R.layout.firstlayout,
parentView, //the view that logically contains the list view, or just the base view in the main layout
false // false if you want to attach the list view to the parent, true otherwise
);
答案 2 :(得分:1)
你可以自己膨胀:
View firstLayout = getLayoutInflater().inflate(R.layout.firstlayout, null, false);
ListView listView = (ListView) firstLayout.findViewById(R.id.lstView);
只需确保firstlayout
的{{1}}标识为ListView
。