滚动活动中的ListView仅显示单个项目

时间:2015-11-18 17:31:33

标签: android listview android-listview

我正在使用Android Studio 1.4附带的滚动活动。在此我有一个ImageView和一个ListView。此布局的xml是:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:context="com.viv.droidchef.EachRec"
    tools:showIn="@layout/each_rec">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:id="@+id/recPixx"/>
        <ListView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/ingredients_list"></ListView>

    </LinearLayout>



</android.support.v4.widget.NestedScrollView>

我面临的问题是,在我的ListView中,只显示了第一个项目。这是我的ListView代码

String ingredients = new String[]{
                    " Boneless Chicken                    - 300 g",
                    "Ginger garlic paste                   - 2 tsp",
                    " Kashmiri red chilly pwd              - ¾ tsp",
                    "Lemon juice                           - 1 tsp",
                    "Salt to taste                                ",
                    "Cooking oil                     - 3 to 4 tbsp",
                    "Gram / besan flour (kadalai maavu    - 2 tbsp",
                    "Yoghurt                               - 1 cup",
                    "Kashmiri red chilly pwd               - 1 tsp",
                    " Ginger garlic paste                  - 1 tsp",
                    "Turmeric pwd                          - ¼ tsp",
                    "Garam masala pwd                      - ½ tsp",
                    "Salt as required                             "
            };
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_multiple_choice, ingredients);
        ListView lv= (ListView)findViewById(R.id.ingredients_list);
        lv.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
        lv.setAdapter(adapter);
lv.setOnTouchListener(new ListView.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                int action = event.getAction();
                switch (action) {
                    case MotionEvent.ACTION_DOWN:
                        // Disallow ScrollView to intercept touch events.
                        v.getParent().requestDisallowInterceptTouchEvent(true);
                        break;

                    case MotionEvent.ACTION_UP:
                        // Allow ScrollView to intercept touch events.
                        v.getParent().requestDisallowInterceptTouchEvent(false);
                        break;
                }

                // Handle ListView touch events.
                v.onTouchEvent(event);
                return true;
            }
        });

我使用了多种选择模式,因为我想要一份清单。我正在使用setOnTouchListener,因为我的布局中已经有一个NestedScrollView。我在另一篇SO帖子上发现了这个。 如果我把dp的高度固定它似乎工作,但这没有帮助 每个屏幕尺寸看起来都不一样。 有没有办法解决我面临的问题,并在不使用Dp的情况下获取列表中的所有项目?

1 个答案:

答案 0 :(得分:1)

取出滚动视图。并重新考虑如何定位图像,或者将其强制放在视图的顶部。

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


    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"

        // android:layout_gravity="center_horizontal"
        android:id="@+id/recPixx"/>
    <ListView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/ingredients_list"></ListView>

</LinearLayout>