在Android中查看时调整ListView元素的大小?

在Android中查看时调整ListView元素的大小?,android,listview,android-listview,resize,Android,Listview,Android Listview,Resize,我试图用视图/元素填充listView,这些视图/元素可以是textview/imageview。这些文本视图可能是可扩展的。如果textview被展开,我希望listview能够调整内容的大小并包装内容 目前已经有几种解决方案: 1.使ListView元素的元素不可见,以便ListView中的视图已达到所需的大小。在本例中,使用原始长字符串创建文本视图,然后将其折叠。 2.调整适配器中元素的大小,然后调用notifyDataSetChanged() 然而,我正在寻找一种解决方案,其中ListV

我试图用视图/元素填充listView,这些视图/元素可以是textview/imageview。这些文本视图可能是可扩展的。如果textview被展开,我希望listview能够调整内容的大小并包装内容

目前已经有几种解决方案: 1.使ListView元素的元素不可见,以便ListView中的视图已达到所需的大小。在本例中,使用原始长字符串创建文本视图,然后将其折叠。 2.调整适配器中元素的大小,然后调用notifyDataSetChanged()

然而,我正在寻找一种解决方案,其中ListView中的视图会自动调整大小,即使它是可见的。我尝试过使用Solution#2,虽然它可以更改视图中的值(如字符串),但它不会完全调整视图的大小,除非将视图从屏幕上滚下,然后返回到视图中

我的代码的相关部分如下:

holder.text.setTrim(!holder.text.getTrim());
holder.text.setText();
holder.text.requestFocusFromTouch();
notifyDataSetChanged();
holder.text.invalidate();
vi.invalidate();
vi.requestLayout(); 
我将它放在适配器的getView函数中的OnClickListener中

有人有什么解决办法吗

有人尝试过使用多个适配器的方法吗?这个对我来说似乎不太好,因为我可能有数百个元素

编辑: 所以我想出了一个愚蠢的解决方案,这绝对是荒谬的。这种行为毫无意义。下面(primaryTextView与上面的文本相同,例如holder.primaryTextView==holder.text)

这允许您在查看视图时展开视图,但不允许在文本折叠后收缩视图。此外,View.GONE和View.VISIBLE不能互换。最后,如果触发View.GONE,textView甚至不会消失。也许这是个线索

它不会完全调整视图的大小,除非视图从屏幕上滚下,然后返回到视图中

它正在工作,但您没有刷新listview,当您滚动关闭并返回时,listview将重新创建更新后的视图


您应该
adapter.notifyDataSetChanged()

Nevermind发现问题:
在我的布局中,我使用height=“0dp”而不是“wrap_content”

我实际上调用了notifyDataSetChanged();从我的适配器中。它在我粘贴的代码中。我粘贴的代码就是onClickListener中的代码。我使用的是
match\u parent
,而parent有
wrap\u内容。导致了同样的问题。
holder.primaryTextView.setTrim(!holder.primaryTextView.getTrim());
if(!holder.primaryTextView.getTrim()){
holder.primaryTextView.setVisibility(View.GONE);
}
else{
holder.primaryTextView.setVisibility(View.VISIBLE);
}
notifyDataSetChanged();
vi.invalidate();