android - 如何处理 ListView 中的 ViewStub

标签 android listview viewstub

几天前,我遇到了新的 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/

相关文章:

android - 如何创建 View stub ?

java - 如何以编程方式创建 Android ViewStub?

android - 如何在Android Studio中显示ViewStub预览?

java - ParseQuery NullPointer 异常悖论

android - 如何在 Android 中使用 Tab 时跨 Activity 存储信息

android - 使用枚举属性作为 ormlite 列值而不是序数。是否可以?

android - 如何将数据从 ListView 中的选定项目传递到另一个 Activity ?

android - 如何将 GeoPoint 转换为硬件屏幕点

android - 如何使用自定义 View 显示单选AlertDialog?

wpf - 将 ListView 自动滚动到最后添加的项目的最佳方式是什么?