Как сделать разделительный экран со списком на одной стороне - PullRequest
0 голосов
/ 12 апреля 2011

Я хочу, чтобы в правой части упражнения отображались различные элементы в зависимости от того, какой элемент списка слева выбран.Я смог последовать примеру Android ListView, где listview занимает весь экран активности, но не смог развернуть его для разделения экрана.Вот мой xml с представлением списка слева и простой кнопкой справа пока.У меня проблемы с определением кода, который будет заполнять мой список.

system_status.xml:

<?xml version="1.0" encoding="utf-8"?>
  <LinearLayout
       xmlns:android="http://schemas.android.com/apk/res/android"
       android:id="@+id/activity_system_status"
       android:title="@string/system_status"
       android:layout_width="fill_parent"
       android:layout_height="fill_parent"
       android:orientation="horizontal">

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical"
        android:layout_weight="1">

        <ListView
        android:id="@+id/my_list"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">
        </ListView>

    </LinearLayout>

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical"
        android:layout_weight="1">
        <ToggleButton android:text="ToggleButton" android:id="@+id/toggleButton1" android:layout_width="wrap_content" android:layout_height="wrap_content"></ToggleButton>
    </LinearLayout>
    </LinearLayout>

ОБНОВЛЕНИЕ: Я понял это с помощьюСообщение косы.Вот код, который заставил его работать.Приведенный выше xml работает как есть.

public class SystemStatusActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    ListView lv = (ListView) findViewById(R.id.my_list);
    String[] stats = getResources().getStringArray(R.array.array_system_status);
    lv.setAdapter(new ArrayAdapter<String>(this, R.layout.list_item, stats));
}
}

list_item.xml:

     <?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:padding="10dp"
    android:textSize="16sp" >
</TextView>

Ответы [ 3 ]

1 голос
/ 12 апреля 2011

Вы должны настроить и адаптировать для этого ListView. Поиск учебников по созданию пользовательских классов адаптера, вы можете найти десятки из них. Вы обязательно должны понимать собственные адаптеры, если планируете разрабатывать для этой платформы.

Но в любом случае вы можете использовать стандартный ArrayAdapter, чтобы заставить его работать:

String[] countries = <put your strings here>
yourList.setAdapter(new ArrayAdapter<String>(this, R.layout.list_item, countries));

После этого настройте ItemClickListener для списка и при необходимости обработайте изменения содержимого на правой панели.

0 голосов
/ 12 апреля 2011

С http://www.anddev.org/view-layout-resource-problems-f27/two-listviews-side-by-side-t11199.html

Практически просто нужно обернуть то, что у вас есть в LinearLayout с android:orientation="horizonal".

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="horizontal"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"
              >
    <LinearLayout android:orientation="vertical"
                  android:layout_width="fill_parent"
                  android:layout_height="fill_parent"
                  android:layout_weight="1"
                  >
        <ListView android:id="@+id/list"
                  android:layout_width="wrap_content"
                  android:layout_height="fill_parent"
                  android:entries="@array/colors"
                  />
    </LinearLayout>
    <LinearLayout android:orientation="vertical"
                  android:layout_width="fill_parent"
                  android:layout_height="fill_parent"
                  android:layout_weight="1"
                  >
        <TextView android:id="@+id/text"
                  android:layout_width="wrap_content" 
                  android:layout_height="fill_parent" 
                  android:text="Hello World, AndroidTest"
                  />
    </LinearLayout>
</LinearLayout>
0 голосов
/ 12 апреля 2011

Попробуйте что-то вроде

<LinearLayout
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"
    android:orientation="horizontal">
The above block was new
<LinearLayout
    android:layout_width="0dp" <--BIG CHANGE HERE
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:layout_weight="1">

    <ListView
    android:id="@+id/list"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    </ListView>

</LinearLayout>

<LinearLayout
    android:layout_width="0dp" Big change here
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:layout_weight="1">
    <ToggleButton android:text="ToggleButton" android:id="@+id/toggleButton1" android:layout_width="wrap_content" android:layout_height="wrap_content"></ToggleButton>
</LinearLayout>

</Linearlayout> NEW

Большие изменения здесь заключались в изменении layout_width для ваших линейных разметок, чтобы они равномерно распределяли пространство, и я также поместил их обоих в горизонтальную линейную разметку.

...