2012-03-23 109 views
24

我正在使用其搜索API与Twitter进行交互的Android应用程序。 Everythings运行良好,除了当我想使用ListView显示结果时,只显示第一个结果。Android - 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,我做错了什么?

+0

什么是关于arrayList.size()的LogCat? – 207 2012-03-23 03:37:04

+0

我有n个元素(大约15),它甚至可以正确地打印出它们! – Rorchackh 2012-03-23 03:41:07

+1

这可能不是问题,但你不必调用resultAdapter.notifyDataSetChanged()。嗯,这个清单包括15个项目,但只有第一个显示..第一个显示正确吗?你在TwitterJSONResults类中重写toString()吗? – 207 2012-03-23 03:52:29

回答

93

不要把ListView的滚动型的内部:)

+0

好的,但现在我失去了滚动!我的视图由一个包含ListView的LinearLayout组成。 ListView本身可以滚动,但LinearLayout不能,所以LinearLayout中超出ListView的项目不能被查看 - 取决于用户的屏幕大小。我想一个人不应该在一个布局中的ListView后包含项目! – Tom 2012-07-27 22:40:08

+5

如果您仍然在寻找解决方案,请http://nex-otaku-en.blogspot.com/2010/12/android-put-listview-in-scrollview.html提供了一种修复ListView高度的方法所以它会显示所有项目。 – dymk 2012-09-04 23:31:07

+1

拯救了我的一天! – ramesh 2013-07-25 09:55:45

3

事实证明,我的Java代码中的所有东西都完美运行。问题是这是使用内的列表视图一个滚动视图,这通常是一个坏主意。它导致列表视图忽略

android:layout="wrap_content" 

因此,内容在那里,它只是没有显示。从我的XML文件中删除滚动视图后,所有的工作文件。

非常感谢207的支持:)

33

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

+2

该解决方案非常完美。谢谢! – JesusS 2013-06-20 10:58:38

+3

不客气! – iProgrammer 2013-06-20 12:43:49

+0

谢谢。我有一个滑出菜单,如果没有滚动视图,它将无法正确滚动。这个解决方案适用于我无法避免的罕见情况。 – LoungeKatt 2013-08-04 18:54:35

7

感谢@ 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> 
+0

这帮了我! – pblead26 2018-03-03 21:44:49

2

我有像你这样的错误,当把列表视图内滚动查看。我的解决方案是以下为:

1.创建一个自定义列表视图,其非滚动

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();  
} 

}

2.使用上述自定义类xml文件

<xx.xx.NonScrollListView 
     android:id="@+id/lv_nonscroll_list" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" > 
    </xx.xx.NonScrollListView> 

它适用于我所有的操作系​​统版本。 希望最适合你。