2013-03-14 3 views
0

Я использую Relative Layout (RL) для просмотра списка (lv) и нескольких наборов других виджетов, таких как Text View (tv), Edit Text (et), затем несколько Кнопки (btn) и, наконец, один индикатор выполнения (pb).

Сценарии
1. Когда я добавить ребенок Просмотры родительского контейнера View ЗВП. Относительная компоновка (rl), в порядке:
RL (Btn1-> Btn2-> tv1-> tv2-> LV-> pb).
Тогда у нас нет проблем, я имею в виду No Exception, No Problem.
2. Но когда я делаю изменение заказа как
RL (tv1-> tv2-> LV-> Btn1-> Btn2-> pb).
, тогда я получаю исключение Classcast.View over ListView приводит к исключению ClassCast

Примечание: две кнопки должны быть над списком, так как оба они являются социальными кнопками веб-сайта, я имею в виду Facebook и Twitter.

XML код:

<RelativeLayout 
    android:id="@+id/rlfornews" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_marginBottom="5dip" 
    android:layout_marginTop="5dip" 
    android:background="@drawable/newsbg" 
    android:orientation="vertical" 
    android:paddingBottom="5dip" > 

    <Button 
     android:id="@+id/btnbasetw" 
     android:layout_width="30dip" 
     android:layout_height="30dip" 
     android:layout_alignParentRight="true" 
     android:layout_centerVertical="true" 
     android:layout_marginBottom="10dip" 
     android:layout_marginLeft="5dip" 
     android:layout_marginRight="10dip" 
     android:background="@drawable/twitter_icon" 
     android:visibility="gone" /> 

    <Button 
     android:id="@+id/btnbasefb" 
     android:layout_width="30dip" 
     android:layout_height="30dip" 
     android:layout_centerVertical="true" 
     android:layout_marginBottom="10dip" 
     android:layout_toLeftOf="@id/btnbasetw" 
     android:background="@drawable/facebook_icon" 
     android:visibility="gone" /> 

    <TextView 
     android:id="@+id/tvnewscon" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="3dip" 
     android:background="@drawable/newstitle" 
     android:gravity="center_vertical" 
     android:paddingLeft="8dip" 
     android:shadowColor="@color/black" 
     android:shadowDy="1" 
     android:shadowRadius="1" 
     android:text="@string/news" 
     android:textColor="@color/white" /> 

    <TextView 
     android:id="@+id/tvfornews" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/tvnewscon" 
     android:layout_marginTop="10dip" 
     android:gravity="center" 
     android:text="@string/no_data_found" 
     android:visibility="gone" /> 

    <ListView 
     android:id="@+id/lvdashboardnews" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_below="@id/tvnewscon" 
     android:padding="4dip" 
     android:visibility="visible" > 
    </ListView> 

    <ProgressBar 
     android:id="@+id/pbfornews" 
     style="?android:attr/progressBarStyleSmall" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerInParent="true" /> 
</RelativeLayout> 

Примечание: Бар Прогресс может быть ниже, но это только для информации пользователя, что некоторые данные загружаются. и когда я получаю эти данные, я делаю его видимость в состоянии VIEW.GONE, а вид списка уже существует! Мой вопрос в том, что я следую за первым сценарием, хотя у меня есть панель прогресса со всего времени, я не получаю исключение класса Cast. Но я получаю исключение, когда я перехожу к сценарию 2. Так почему я его получаю?

+0

где у вас есть ClassCastException? вы можете опубликовать журнал ошибок. И лоток для очистки проекта после изменения порядка элементов. несколько раз его проблема Eclipse – JafarKhQ

+0

Я получил журнал ошибок, ListView lv = (ListView) findViewById (R.id.lv); с lv, приравнивающимся к идентификатору Button! Я не могу вставить лог-кошку, так как сейчас проект не со мной. но я изучил его достаточно хорошо, чтобы сделать след, но на это потребуется время, во всяком случае, я постараюсь отправить журналы как можно скорее. –

ответ

0
  1. Я не уверен, что это, но может быть причиной вы использовали андроид: layout_below = «@ идентификатор/TextView» вместо того, чтобы использовать этот андроид: layout_below = «@ + идентификатор/TextView» все UI ,

  2. Если вы можете использовать этот интерфейс, используя LinearLayout.

+0

Это нормально, поскольку второй TextView не занимает много места, и он должен появиться, когда listview не сможет извлечь данные из службы. В этот момент ListView вынужден перейти в состояние VISIBILITY.GONE. Кроме того, мне нужно, чтобы это RelativeLayout, так как я хочу позиционировать виджетов в соответствии с их относительным расположением родителя. –