几天前,我遇到了新的 Twitter API(版本 3.1.1),我试图复制我在 tweets 列表中看到的效果。
不幸的是我是新用户,我不能发布图片,所以我试图解释我在说什么
有推文列表( ListView ),您可以通过 longKeyPressed 与它们进行交互。 一旦单击,所选项目就会消失,并会出现一个新项目。在这个新项目中,有用于所选推文的可用选项(转推、收藏等...)
我试图制作此功能的副本,但有几个我无法弄清楚的问题。
假设我们使用 ViewStub 来优化 listView,这是行的布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<ViewStub
android:id="@+id/twitter_stub"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:inflatedId="@+id/twitter_actions"
android:layout="@layout/twitter_swipe_actions" />
<LinearLayout android:id="theOneWhichHasToDisappear">
.....the row of the listVIew.....
<LinearLayout>
当我尝试将 linearLayout(“theOneWhichHasToDisappear”)的可见性设置为消失时,一切都很酷,就在这里
v.findViewById(R.id.theOneWitchHasToDisappear).setVisibility(View.GONE);
//inflating the stubview
ViewStub stub = (ViewStub) v.findViewById(R.id.twitter_stub);
View inflated = stub.inflate();
但不幸的是我无法保持项目的正确高度(新充气后高度不应该改变)。 否则,当我替换列表中的项目时,其他项目会发生变化!!!例如,当我点击列表的第一项(第一条推文)时,数字 1 会改变 View ,但数字 4、8、12 等也会改变!
有人知道怎么做吗?谢谢
最佳答案
你可以把ViewStub和布局放在一个RelativeLayout上,这样大小就不会改变。
其他项目的变化是关于ListView 的 View 重用。您必须检查适配器的 getView() 方法,确保仅在所选 View 上显示 stub ,而在其他 View 上您必须隐藏它。
关于android - 如何处理 ListView 中的 ViewStub,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9690657/