包括activity_main.xml中的ListView布局,但是如何调用Activity类

时间:2016-05-10 06:51:16

标签: android listview

我想在 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;
}

}

3 个答案:

答案 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_layoutListViewActivity无关,除了它也在那里使用。您不能将活动嵌套在彼此内部,因此唯一的答案是在您所说的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布局的高度,然后查看差异。