Android List + Adapter 仅显示第一个条目

Posted

技术标签:

【中文标题】Android List + Adapter 仅显示第一个条目【英文标题】:Android List + Adapter shows only first entry 【发布时间】:2012-05-06 07:47:00 【问题描述】:

所以我制作了一个自定义 ArrayAdapter 来填充我的列表,它只是覆盖了 getView(int position, View v, ViewGroup parent)。

如果我这样使用它:

public class MyActivity extends ListActivity 
  public void onCreate(Bundle savedInstanceState) 
    super.onCreate(savedInstanceState);
    setListAdapter(adapter);
  

一切正常,我的列表正确显示所有条目。

现在,如果我尝试在 XML 布局中的 上使用相同的适配器类,如下所示:

ListView lv = (ListView) v.findViewById(R.id.list);
MyAdapter a = new MyAdapter (lv.getContext(), R.layout.list_item, entries);
lv.setAdapter(a);

它只显示列表的第一个条目。

我已经尝试使用 adapter.add(entry.get(i)); 手动添加项目并调用 adapter.notifyDataSetChanged();之后没有帮助。

e:这是 XML 布局:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_>
<LinearLayout 
    android:layout_
    android:layout_
    android:orientation="vertical" 
    android:padding="1dp">

    <TextView
        android:id="@+id/bc_path"
        android:layout_
        android:layout_
        android:padding="3dp"
        android:textStyle="bold"
        android:textAppearance="?android:attr/textAppearanceSmall"/>

    <TextView
        android:id="@+id/bc_name"
        android:layout_
        android:layout_
        android:padding="3dp"
        android:textStyle="bold"
        android:textAppearance="?android:attr/textAppearanceMedium" 
        android:background="@drawable/title_gradient"/>

    <TextView
        android:id="@+id/bc_genre"
        android:layout_
        android:layout_
        android:padding="3dp"
        android:background="@drawable/location_gradient"
        android:textColor="#ffffff"/>

    <LinearLayout 
        android:layout_
        android:layout_
        android:orientation="horizontal"
        android:weightSum="0.4"
        android:layout_marginTop="3dp"
        android:layout_marginBottom="3dp">
        <ImageButton 
            android:id="@+id/bc_homepage"
            android:src="@drawable/homepage"
            android:layout_
            android:layout_
            android:layout_weight=".1"
            android:padding="0dp"
            android:onClick="loadWebsite"
            android:background="@drawable/black_button"
            android:layout_margin="2dp"
            />
        <ImageButton 
            android:id="@+id/bc_facebook"
            android:src="@drawable/facebook"
            android:layout_
            android:layout_
            android:layout_weight=".1"
            android:padding="0dp"
            android:onClick="loadWebsite"
            android:background="@drawable/black_button"
            android:layout_margin="2dp"
            />
        <ImageButton 
            android:id="@+id/bc_myspace"
            android:src="@drawable/myspace"
            android:layout_
            android:layout_
            android:layout_weight=".1"
            android:padding="0dp"
            android:onClick="loadWebsite"
            android:background="@drawable/black_button"
            android:layout_margin="2dp"
            />
        <ImageButton 
            android:id="@+id/bc_fav"
            android:src="@drawable/d_attends"
            android:layout_
            android:layout_
            android:layout_weight=".1"
            android:padding="0dp"
            android:onClick="favBand"
            android:background="@drawable/black_button"
            android:layout_margin="2dp"
            />
    </LinearLayout>

    <ListView
        android:id="@+id/list"
        android:layout_
        android:layout_
        android:textAppearance="?android:attr/textAppearanceMedium"/>

</LinearLayout>

【问题讨论】:

您是否将getCount 实现为return 1 ListView lv = (ListView) v.findViewById(R.id.list);上面代码中的这个v.是什么?? 您可以粘贴列表的 XML 吗?这可能是布局大小的问题 不,我没有覆盖 getCount 并且它返回正确的条目数。 在我的 ArrayListFragment 的 onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 中是 View v = inflater.inflate(R.layout.xml_layout, container, false); 【参考方案1】:

我认为你不应该在你的 scrollView 中使用 ListView,因为 ListView 内置提供滚动功能。在上面的代码中,由于在线性布局中垂直添加所有视图,因此您的 ListView 位于底部,因此根为 ScrollView,List 视图的自动滚动视图选项无法显示所有条目。请考虑一下,然后尝试在 ScrollView 之外添加 ListView。

【讨论】:

以上是关于Android List + Adapter 仅显示第一个条目的主要内容,如果未能解决你的问题,请参考以下文章

从 List Adapter Android 中的按钮单击编辑 EditText

Android 怎么删除list中的某一项item

Android之Adapter用法总结(转)

Android-Listview中Bitmap的缓存实现有哪些方式

android怎么刷新适配器

Android简单开发之 通用Adapter ViewHolder