我有一个列表视图,希望用户能够从中删除项目。如果用户按住一行足够长的时间,则该行的复选框将可见。但是,尽管有足够的空间,但列表视图并不能容纳(现在更高的)行。当listview在滚动视图中时,我遇到了这个问题,但现在不再如此。我知道我可以将文本重新格式化为绷带解决方案,但是我想了解发生了什么。
这是保存第一个条目之前和之后的列表视图。您可以看到列表视图的高度保持不变,并且不会扩展以容纳两个条目:
这是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;
}
}