gpt4 book ai didi

android - ListView 内容在适配器更新后被截断

转载 作者:行者123 更新时间:2023-11-29 14:53:26 25 4
gpt4 key购买 nike

我的 UI 中有许多垂直堆叠的面板。每个面板都包含一个 ListView。基于用户交互,ListView 中的项目数得到更新。

我的问题是,如果我增加 ListView 中显示的项目数量,包含面板将不会扩展以显示它们。相反,我的 ListView 只是被淡入黑色切断了。我正在以编程方式创建这些堆叠面板中的每一个 - 这是创建函数的主体:

LinearLayout containingPanel = new LinearLayout(TestActivity.this);
containingPanel.setOrientation(LinearLayout.VERTICAL);

// create title
TextView titleText = new TextView(TestActivity.this);
titleText.setText("a title");
titleText.setGravity(Gravity.CENTER);
titleText.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));


// create dynamic list view of costs
ListView dynamicContentListView = new ListView(TestActivity.this);
dynamicContentListView.setAdapter(new MyDynamicAdapter());
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);
params.weight = 1;
dynamicContentListView.setLayoutParams(params);

// build up GUI

containingPanel.addView(titleText);

containingPanel.addView(dynamicContentListView);
return containingPanel;

我以为在ListView上设置权重应该就可以了,其实不然。所有 GUI 更新工作正常 - 新项目自动添加到支持适配器的数据中,并且 ListView 正确更新自身。但是在我添加了三四个新项目之后,containingPanel 拒绝自行更新并且新项目被混合了。

最佳答案

试试这个功能。我想,这可能对你有帮助。该函数用于根据其子项设置 ListView 的高度。

public static void setListViewHeightBasedOnChildren(ListView listView) {
ListAdapter listAdapter = listView.getAdapter();
if (listAdapter == null) {
// pre-condition
return;
}

int totalHeight = 0;
int desiredWidth = MeasureSpec.makeMeasureSpec(listView.getWidth(), MeasureSpec.AT_MOST);
for (int i = 0; i < listAdapter.getCount(); i++) {
View listItem = listAdapter.getView(i, null, listView);
listItem.measure(desiredWidth, MeasureSpec.UNSPECIFIED);
totalHeight += listItem.getMeasuredHeight();
}

ViewGroup.LayoutParams params = listView.getLayoutParams();
params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1));
listView.setLayoutParams(params);
listView.requestLayout();
}

关于android - ListView 内容在适配器更新后被截断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11955157/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com