一个活动中有几个listView

时间:2015-07-24 10:50:15

标签: android listview android-listview

我必须在一个Activity中使用大约3-4个listView。我知道如何使用一个listView,但是当我需要使用超过1时,它对我来说真的很重要。在我问你之前,我已经搜索了很多内容,但没有任何内容..如果你有适合我的链接 - 欢迎你。 我从Parse.com获取数据(我检查它并且连接正确)然后我需要在每个listView中调度它。 1列= 1列表视图,我有3-4列。

这是我的dish_view.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ListView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/soup"
        />

    <ListView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/garnish"
        />

    <ListView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/starter"
        />

    <ListView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/salad"
        />

    <ListView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/drink"
        />

</LinearLayout>

它的ListActivity.class

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.dish_view);
    soupView = (ListView) findViewById(R.id.list1);
    garnishView = (ListView) findViewById(R.id.garnish);
    starterView = (ListView) findViewById(R.id.starter);
    saladView = (ListView) findViewById(R.id.salad);
    drinkView = (ListView) findViewById(R.id.drink);

final List<String> soupList = new ArrayList<>();

List<String> garnishList = new ArrayList<>();
List<String> starterList = new ArrayList<>();
List<String> saladList = new ArrayList<>();
List<String> drinkList = new ArrayList<>();

ParseQuery<ParseObject> query = ParseQuery.getQuery("Dishes");
query.selectKeys(Arrays.asList("soup"));
query.findInBackground(new FindCallback<ParseObject>() {
    @Override
    public void done(List<ParseObject> list, ParseException e) {
        if (e == null) {
            for (ParseObject object : list) {
                soupList.add(object.getString("soup"));
                System.out.println(soupList);
            }
        }
    }
});
ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, soupList);
soupView.setAdapter(adapter);

}

还有dish.xml,如何显示

<!-- language: xml -->
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/dish"
        />

</LinearLayout>

1 个答案:

答案 0 :(得分:0)

您可以尝试为每个列表视图分配权重。例如:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">

<ListView
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1"
    android:id="@+id/soup"
    />

<ListView
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1"
    android:id="@+id/garnish"
    />

<ListView
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1"
    android:id="@+id/starter"
    />

<ListView
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1"
    android:id="@+id/salad"
    />

<ListView
    android:layout_width="wrap_content"
    android:layout_height="0dp"
    android:layout_weight="1"
    android:id="@+id/drink"
    />

您应该在收到数据时填充列表并设置适配器。试试这个:

query.findInBackground(new FindCallback<ParseObject>() {
@Override
public void done(List<ParseObject> list, ParseException e) {
    if (e == null) {
        String[] items = new String[list.size()];
        int i = 0;
        for (ParseObject object : list) {
            items[i] = object.getString("soup");
            i++;
            System.out.println(soupList);
        }
        ArrayAdapter<String> adapter = new ArrayAdapter<>(ListActivity.this, android.R.layout.simple_list_item_1, items);
        soupView.setAdapter(adapter);
    }
}
});