我想在 activity_main.xml
中包含serage布局文件...
<include layout="@layout/table_layout" />
<include layout="@layout/relative_layout"/>
<include layout="@layout/listview_layout"/>
...
前两个工作正常,但 listview_layout.xml 在运行应用程序时没有显示任何内容。似乎原因是ListViewActivity
类永远不会被调用( ListViewActivity onCreate未被调用)。所以无法获取listView的数据源。
问题: 我应该如何调用ListViewActivity类?
listview_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@color/blue"
android:id="@+id/listview1">
</ListView>
ListViewActivity.java
public class ListViewActivity extends AppCompatActivity {
ListView listview;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.listview_layout);
listview = (ListView)findViewById(R.id.listview1);
listview.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_expandable_list_item_1,getData()));
}
private List<String> getData(){
List<String> data = new ArrayList<String>();
data.add("test1");
data.add("test2");
data.add("test3");
data.add("test4");
return data;
}
}
修改: 前两个包括布局集属性:
android:layout_width="match_parent"
android:layout_height="wrap_content"
编辑:
如果我将这些代码放入MainActivity类中,它会起作用,但如果是这样,我的ListViewActivity似乎毫无用处。那么有没有办法在MainActivity中调用ListViewActivity?
MainActivity.java
public class MainActivity extends AppCompatActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
listview = (ListView)findViewById(R.id.listview1);
listview.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_expandable_list_item_1,getData()));
}
private List<String> getData(){
List<String> data = new ArrayList<String>();
data.add("test1");
data.add("test2");
data.add("test3");
data.add("test4");
return data;
}
}
答案 0 :(得分:1)
尝试使用自定义列表视图布局创建数组适配器类,您可以在其中传递listview数组数据大小和计数。
答案 1 :(得分:1)
希望在activity_main.xml
中包含serval布局文件<include layout="@layout/table_layout" /> <include layout="@layout/relative_layout"/> <include layout="@layout/listview_layout"/>
包括listview_layout
与ListViewActivity
无关,除了它也在那里使用。您不能将活动嵌套在彼此内部,因此唯一的答案是在您所说的MainActivity
中包含逻辑。
共享逻辑的替代方法是使MainActivity
扩展ListViewActivity
,并在ListViewActivity
中添加可覆盖的方法来设置内容视图。
这样的事情:
<强> ListViewActivity 强>
public class ListViewActivity extends AppCompatActivity {
ListView listview;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
createContentView();
listview = (ListView)findViewById(R.id.listview1);
listview.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_expandable_list_item_1,getData()));
}
protected void createContentView() {
setContentView(R.layout.listview_layout);
}
private List<String> getData(){
List<String> data = new ArrayList<String>();
data.add("test1");
data.add("test2");
data.add("test3");
data.add("test4");
return data;
}
}
<强> MainActivity 强>
public class MainActivity extends ListViewActivity {
@Override
protected void createContentView() {
setContentView(R.layout.activity_main);
}
}
答案 2 :(得分:0)
您的ListView可能会被隐藏,因为其他视图高度设置为match_parent / fill_parent,并且您的ListView高度设置为wrap_content。 尝试更改ListView布局的高度,然后查看差异。