Android - ListView只显示第一个结果

时间:2012-03-23 03:32:21

标签: android listview element

我正在开发一个Android应用程序,它使用他们的搜索API与Twitter交互。 Everythings运行良好,除了当我想使用ListView显示结果时,只显示第一个结果。

ArrayList<TwitterJSONResults> arrayList = new ArrayList<TwitterJSONResults>(data.getResults().size());
for (int i = 0; i < data.getResults().size(); i++) {
    arrayList.add(data.getResults().get(i));
}

ArrayAdapter<TwitterJSONResults> resultAdapter = new ArrayAdapter<TwitterJSONResults>(
                this, android.R.layout.simple_list_item_1, arrayList);
listview.setAdapter(resultAdapter);
resultAdapter.notifyDataSetChanged();

上面的代码片段展示了如何将结果添加到适配器并将此适配器设置为listview,我做错了什么?

8 个答案:

答案 0 :(得分:104)

不要将ListView放在ScrollView中:)

答案 1 :(得分:37)

这不是答案。您可以在ScrollView中使用ListView。阅读:http://kennethflynn.wordpress.com/2012/09/12/putting-android-listviews-in-scrollviews/

答案 2 :(得分:8)

感谢@ 207我意识到我的问题是因为我使用的是 NestedScrollView ,所以对我来说使用了解决方案

android:fillViewport="true"

这是我的代码:

    <android.support.v4.widget.NestedScrollView
        android:id="@+id/content_frame"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fillViewport="true"
        app:layout_behavior="@string/appbar_scrolling_view_behavior">
    </android.support.v4.widget.NestedScrollView>

答案 3 :(得分:3)

事实证明我的java代码中的所有内容都能正常运行。问题是使用l​​istview 里面一个滚动视图,这通常是一个坏主意。它导致listview无视

android:layout="wrap_content"
因此,内容在那里,它只是没有显示。从我的XML文件中删除scrollview后,一切都工作了。

非常感谢207的支持:)

答案 4 :(得分:3)

将listview放在ScrollView中时,我遇到了这个错误。我的解决方案如下:

<强> 1。创建一个不可滚动的自定义列表视图

models.Goods

}

<强> 2。将以上自定义类用于xml文件

public class NonScrollListView extends ListView {

public NonScrollListView(Context context) {
    super(context);
}
public NonScrollListView(Context context, AttributeSet attrs) {
    super(context, attrs);
}
public NonScrollListView(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
}
@Override
public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        int heightMeasureSpec_custom = MeasureSpec.makeMeasureSpec(
                Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);
        super.onMeasure(widthMeasureSpec, heightMeasureSpec_custom);
        ViewGroup.LayoutParams params = getLayoutParams();
        params.height = getMeasuredHeight();    
}

对我来说,它适用于所有操作系统版本。 希望最适合你。

答案 5 :(得分:0)

您可以在NestedScrollView中使用ListView。 您唯一需要记住的就是在xml布局中添加var li = $('li'); var liSelected = li.eq(0).addClass('selected'); $(window).keydown(function(e) { if (e.which === 13) { if (liSelected) { window.open(liSelected.children(':first').attr('href')) } } else if (e.which === 40) { if (liSelected) { liSelected.removeClass('selected'); next = liSelected.next(); if (next.length > 0) { liSelected = next.addClass('selected'); } else { liSelected = li.eq(0).addClass('selected'); } } else { liSelected = li.eq(0).addClass('selected'); } } else if (e.which === 38) { if (liSelected) { liSelected.removeClass('selected'); next = liSelected.prev(); if (next.length > 0) { liSelected = next.addClass('selected'); } else { liSelected = li.last().addClass('selected'); } } else { liSelected = li.last().addClass('selected'); } } });以便启用NestedScrollView的子级滚动。

答案 6 :(得分:0)

将其放在ListView xml布局中

    android:stackFromBottom="true"
    android:transcriptMode="alwaysScroll"

答案 7 :(得分:0)

这是我的答案

<android.support.v4.widget.NestedScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fillViewport="true"
        app:layout_behavior="@string/appbar_scrolling_view_behavior">

        <ListView
            android:minWidth="25px"
            android:minHeight="25px"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:layout_behavior="@string/appbar_scrolling_view_behavior"
            android:id="@+id/listViewRefeCalendarDay" />

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