Android ListView 不显示第一项

标签 android listview arraylist

我已经经历了this & this所以问题,但无法弄清楚为什么我的 ListView 的第一项不可见。我已经检查了 arraylist 的大小,它是正确的。

  1. 如果有 2 个项目,则只显示 1 个。
  2. 如果有 1 项则显示 0。

ListView 文件:

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

    <ListView
        android:id="@+id/videoListView"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:divider="@null"
        android:dividerHeight="0dp" />

</RelativeLayout>

ListView 项目 xml 文件:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:paddingTop="10dp">

    <ImageView
        android:layout_width="150dp"
        android:layout_height="90dp"
        android:id="@+id/videoImageView"
        android:layout_marginLeft="10dp"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="35dp"
        android:id="@+id/titleTextView"
        android:layout_marginRight="10dp"
        android:layout_toRightOf="@+id/videoImageView"
        android:layout_marginLeft="10dp"
        android:textSize="12sp"
        android:textColor="#000000"
        android:ellipsize="end"
        android:maxLines="2"
        />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="20dp"
        android:id="@+id/timeTextView"
        android:layout_alignStart="@+id/titleTextView"
        android:layout_alignLeft="@+id/titleTextView"
        android:layout_below="@+id/titleTextView"/>

    <ImageView
        android:layout_width="25dp"
        android:layout_height="25dp"
        android:id="@+id/downloadImageView"
        android:layout_alignStart="@+id/timeTextView"
        android:layout_alignLeft="@+id/timeTextView"
        android:layout_below="@+id/timeTextView"
        android:layout_alignBottom="@+id/videoImageView"
        android:src="@drawable/ic_vector_download"
        android:layout_marginTop="5dp"/>

    <ProgressBar
        android:layout_width="25dp"
        android:layout_height="25dp"
        android:id="@+id/downloadProgressBarView"
        android:layout_alignStart="@+id/timeTextView"
        android:layout_alignLeft="@+id/timeTextView"
        android:layout_below="@+id/timeTextView"
        android:layout_alignBottom="@+id/videoImageView"
        android:layout_marginTop="5dp"
        android:visibility="gone"/>

    <ImageView
        android:layout_width="25dp"
        android:layout_height="25dp"
        android:id="@+id/shareImageView"
        android:layout_below="@+id/timeTextView"
        android:layout_alignBottom="@+id/videoImageView"
        android:layout_toRightOf="@+id/downloadImageView"
        android:layout_marginTop="5dp"
        android:layout_marginLeft="7dp"
        android:src="@drawable/ic_vector_share"/>
</RelativeLayout>

适配器类:

public class OfflineVideoAdapter extends ArrayAdapter<OfflineVideo> {

    Context context;
    OfflineVideoDBHelper db;
    List<OfflineVideo> list;

    public OfflineVideoAdapter(Context context, int resource, List<OfflineVideo> list) {
        super(context, resource, list);
        this.context = context;
        this.list = list;
    }

    @NonNull
    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        final OfflineVideoHolder holder;
        if (convertView == null) {
            holder = new OfflineVideoHolder();
            convertView = LayoutInflater.from(context).inflate(R.layout.video_list_item, parent, false);
            holder.video = (ImageView)convertView.findViewById(R.id.videoImageView);
            holder.title = (TextView)convertView.findViewById(R.id.titleTextView);
            holder.publishedAt = (TextView)convertView.findViewById(R.id.timeTextView);
            holder.delete = (ImageView)convertView.findViewById(R.id.downloadImageView);
            holder.share = (ImageView)convertView.findViewById(R.id.shareImageView);
            convertView.setTag(holder);
        } else {
            holder = (OfflineVideoHolder)convertView.getTag();
        }
        final OfflineVideo offlineVideo = getItem(position);
        Picasso.with(context).load(offlineVideo.imageURL).into(holder.video);
        holder.title.setText(offlineVideo.title);
        holder.publishedAt.setText(CommonUtils.calculateTime(offlineVideo.publishedAt));
        holder.delete.setImageResource(R.drawable.ic_vector_delete);
        return convertView;
    }
}

最佳答案

ListView 属性 layout_widthlayout_height 更改为 Fill_Parent 它对我有用。

关于Android ListView 不显示第一项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39550570/

相关文章:

android - 如何从 Facebook SDK 3.0 获取好友列表

android - afterTextChanged 崩溃

android - 为什么 LayoutInflater 会忽略我指定的 layout_width 和 layout_height 布局参数?

android - 具有不同项目布局的 ListView 的 ViewHolders

android - 如何在作为抽屉导航一部分的 fragment 中创建 ListView

java - 重复用户输入,同时将其添加到数组列表

具有不同行高的 ListView 中的 Android RelativeLayout fill_parent 意外行为

java - ListView ItemClickListener 双击时有效,单击时不响应

android - 带有自定义数组列表的弹出菜单

java - Android 和 ArrayLIst Size 返回 0