2012-03-13 68 views
1

前几天我遇到了新的Twitter API(版本3.1.1),我试图复制我在推文列表中看到的效果。如何处理ListView中的ViewStub

不幸的是我是一个新用户,我不能发表图片,所以我想解释一下我说的

有鸣叫(列表视图)的服务,您可以与互动他们由一个longKeyPressed。 只要您点击,选定的项目消失,并出现一个新的项目。在这个新的项目中有选择推文(转推,最喜欢的等...)的可用选项

我试图做一个这个功能的副本,但我有一个问题,我无法弄清楚。

让我们假设我们使用ViewStub以优化列表视图,这是该行

<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”),以水涨船高的可见性的布局, everithing是凉的,这里是

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改变了视图,但数字4,8,12等也改变了!

有谁知道怎么办呢?谢谢

回答

1

你可以把ViewStub和布局放在一个RelativeLayout上,这样尺寸不会改变。

对其他项目的更改与ListView的视图重用有关。您必须检查适配器的getView()方法,该方法仅在您显示存根的选定视图上检查,而您必须检查其他人必须将其隐藏的方法。

+0

对不起,但即使设置了包含存根和行布局的RelativeLayout,高度仍然在变化! – oroblam 2012-03-14 10:09:54

+0

您是否在RelativeLayout上设置了高度? – 2012-03-14 12:21:59

+0

我的RelativeLayout的高度设置为android:layout_height =“wrap_content” – oroblam 2012-03-14 17:12:15