Создание списка с каждым элементом, содержащим различные элементы в Android - PullRequest
0 голосов
/ 13 января 2011

Я новичок в разработке Android. Я создал Activity с интерфейсом, похожим на ListView, но без использования ListView, поскольку каждый элемент (строка) в списке может иметь разные элементы. Я успешно создал его, включив LinearLayouts в ScrollView, но XML выглядит грязно. Я также добавил onClickListener для каждого из внутренних LinearLayouts.

Есть ли лучший способ сделать это?

Спасибо.

С уважением,

dezull

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  android:layout_height="fill_parent"
  android:orientation="vertical" 
  android:layout_width="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android">
 <ScrollView 
  android:id="@+id/ScrollView01" 
  android:layout_width="fill_parent" 
  android:layout_height="fill_parent" 
  android:layout_weight="1">
  <LinearLayout 
   android:id="@+id/LinearLayout02" 
   android:layout_width="fill_parent" 
   android:layout_height="fill_parent" 
   android:orientation="vertical">
   <LinearLayout 
    android:id="@+id/wo_status_layout" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical"
    android:background="@color/desc_button"
    android:focusable="true"
    android:padding="3dp">
    <TextView
     android:id="@+id/wo_status"
     android:text="@string/wo_status"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content" />
    <TextView
     android:id="@+id/wo_status"
     android:text="Waiting for Parts"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content" />
   </LinearLayout>
   <LinearLayout 
    android:id="@+id/wo_prob_desc_layout" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical"
    android:background="@color/desc_button"
    android:focusable="true"
    android:padding="3dp">
    <TextView
     android:id="@+id/wo_prob_desc"
     android:text="@string/wo_status"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content" />
    <TextView
     android:id="@+id/wo_prob_desc"
     android:text="New problem"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content" />
   </LinearLayout>
  </LinearLayout>
 </ScrollView>
</LinearLayout>

Ответы [ 2 ]

2 голосов
/ 19 января 2011

Я ведущий разработчик для Ledgerist.Мы создали подкласс Adapter, который реализовал getView, как предложено выше.

Внутри метода getView вы создадите объект ViewHolder, который, как я уверен, показан во многих учебных пособиях в Интернете.Вы захотите создать экземпляр каждого элемента управления, который вы можете захотеть показать внутри ViewHolder.Когда вы приступите к реализации ячейки, вы захотите установить все элементы управления, которые вы не хотите отображать, GONE, используя их метод setVisibility.

Надеюсь, это полезно,

ДжеймсК., ведущий разработчик www.vervv.com |support@vervv.com

Подписывайтесь на нас в Твиттере: @vervv http://twitter.com/vervv

0 голосов
/ 13 января 2011

вы можете создать подкласс Adapter и реализовать getView (); Adapter позволяет вам использовать более одного View, и вы можете установитьOnClickListener для любого; вернуть linearLayouts с детьми, которые вам нравятся; Android уже имеет подклассы адаптера для различных целей; ArrayAdapter, SimpleAdapter, CursorAdapter, ..etc; затем ListView.setAdapter (yourAdapter);

Еще одна хитрость заключается в использовании адаптера с scrollView; установить LinearLayout как дочерний scrollView, а затем linearLayout.addview (adapter.getView (...));

надеюсь, что это поможет;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...