2012-03-13 2 views
1

Несколько дней назад я наткнулся на новый API Twitter (версия 3.1.1), и я попытался скопировать эффект, который я видел в списке твитов.Как обрабатывать ViewStub в ListView

К сожалению, я новый пользователь, и я не могу добавлять изображения, так что я пытаюсь объяснить, что я говорю о

Существует список твитов (виде списка), и вы можете взаимодействовать с их с помощью longKeyPressed. Как только вы нажмете, выбранный элемент исчезнет, ​​и появится новый элемент. в этом новом элементе есть доступная опция для выбранного твита (retweet, favorite и т. д.)

Я попытался сделать копию этой функции, но у меня есть пара вопросов, которые я не могу понять ,

Давайте предположим, что мы используем 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») на нет, 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

+0

Вы установили высоту на RelativeLayout? –

+0

Высота моего RelativeLayout установлена ​​на android: layout_height = "wrap_content" – oroblam

Смежные вопросы