为什么我的列表视图无法扩展以容纳更大的行大小?

时间:2019-04-10 23:29:53

标签: android

我有一个列表视图,希望用户能够从中删除项目。如果用户按住一行足够长的时间,则该行的复选框将可见。但是,尽管有足够的空间,但列表视图并不能容纳(现在更高的)行。当listview在滚动视图中时,我遇到了这个问题,但现在不再如此。我知道我可以将文本重新格式化为绷带解决方案,但是我想了解发生了什么。

这是保存第一个条目之前和之后的列表视图。您可以看到列表视图的高度保持不变,并且不会扩展以容纳两个条目:

ListView with two entries

ListView after holding the first entry, making the the checkbox visible

这是listView:

old.zones != new.zones

这是listView项的布局:

<ListView
    android:id="@+id/listView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />

这是在我的自定义适配器中如何放大布局:

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

    <CheckBox
        android:id="@+id/deleteCheckBox"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:visibility="gone" />

    <TextView
        android:id="@+id/number"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:paddingLeft="5dp"
        android:textColor="@android:color/black"
        android:textSize="18sp" />

    <TextView
        android:id="@+id/date"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:gravity="right"
        android:paddingRight="5dp"
        android:textColor="@android:color/darker_gray"
        android:textSize="18sp" />
</LinearLayout>

最后设置适配器:

public class CustomAdapter extends ArrayAdapter<CustomlistEntry> {
    public CustomAdapter(Context context, ArrayList<CustomlistEntry> entries) {
        super(context, 0, entries);
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        if(convertView == null) {
            convertView = LayoutInflater.from(getContext()).inflate(R.layout.activity_custom_listview, parent, false);
        }
        CustomlistEntry entry = getItem(position);

        TextView tvNumber = convertView.findViewById(R.id.number);
        TextView tvDate = convertView.findViewById(R.id.date);

        tvNumber.setText(entry.getNumber());
        tvDate.setText(entry.getDateString());

        return convertView;
    }
}

0 个答案:

没有答案