создание динамического представления, кратное представление X раз, получение / установка значения для каждой группы - PullRequest
5 голосов
/ 07 февраля 2010

У меня есть базовое представление в XML.

http://img513.imageshack.us/img513/7171/contextnotionlevelprefs.jpg

<RelativeLayout android:id="@+id/RelativeLayout01" android:layout_width="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android" android:layout_height="wrap_content"><TextView android:layout_height="wrap_content" android:layout_width="fill_parent" android:text="Family" android:id="@+id/Family" android:textSize="16px" android:padding="5px" android:textStyle="bold" android:gravity="center_horizontal"></TextView>
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/Family" android:layout_alignRight="@+id/Family" android:text="@string/context_notion_level_off" android:id="@+id/ContextNotionLevel"></TextView>
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_toLeftOf="@+id/Detailed" android:layout_below="@+id/Family" android:layout_alignLeft="@+id/Family" android:textStyle="bold" android:id="@+id/Module" android:text="Location"></TextView>
<SeekBar android:layout_height="wrap_content" android:id="@+id/SeekBar01" android:layout_width="fill_parent" android:padding="5px" android:saveEnabled="true" android:layout_below="@+id/Module" android:max="2"></SeekBar>

</RelativeLayout>

Как я могу повторить раздел X раз, чтобы он выглядел здесь:
http://img687.imageshack.us/img687/4674/contextnotionleveldraft.png

Тогда как я могу получить доступ к панели поиска для всех элементов?
Обратите внимание, что я хочу, чтобы это работало динамично, например: 15 раз.

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

1 Ответ

10 голосов
/ 07 февраля 2010

На изображении вы не хотите повторять заголовок "Семья"

Что вы можете сделать, это создать новый xml (mymain.xml), содержащий макет и заголовок

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:orientation="vertical" android:id="@+id/myMainLayout" android:layout_width="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android" android:layout_height="wrap_content">
<TextView android:layout_height="wrap_content" android:layout_width="fill_parent" android:text="Family" android:id="@+id/Family" android:textSize="16px" android:padding="5px" android:textStyle="bold" android:gravity="center_horizontal"></TextView>
</LinearLayout>

Затем в другом xml (myviews.xml) поместите xml, который вы поместили из своего OP (с удаленным заголовком)

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout android:id="@+id/RelativeLayout01"
    android:layout_width="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_height="wrap_content">

    <TextView android:layout_width="fill_parent"
        android:layout_height="wrap_content" android:textStyle="bold"
        android:id="@+id/Module" android:text="Location">
    </TextView>

    <TextView android:layout_width="wrap_content"
        android:layout_height="wrap_content" android:text="context_notion_level_off"
        android:layout_alignRight="@+id/Module" android:id="@+id/ContextNotionLevel">
    </TextView>


    <SeekBar android:layout_height="wrap_content" android:id="@+id/SeekBar01"
        android:layout_width="fill_parent" android:padding="5px"
        android:saveEnabled="true" android:layout_below="@+id/Module"
        android:max="2">
    </SeekBar>

</RelativeLayout>

А Активность:

super.onCreate(savedInstanceState);

setContentView(R.layout.mymain);
LinearLayout l = (LinearLayout) findViewById(R.id.myMainLayout);
LayoutInflater linflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);

for(int i = 0 ; i < 15; i++) {
  View myView = linflater.inflate(R.layout.myviews, null);
  SeekBar s = (SeekBar) myView.findViewById(R.id.SeekBar01);
  //Set an id to know which seekbar is in use
  s.setId(i);
  TextView t = (TextView) myView.findViewById(R.id.Module);

  //Change name dynamically
  t.setText(("My location " + i).toString());
  s.setOnSeekBarChangeListener(new OnSeekBarChangeListener(){

    @Override
    public void onProgressChanged(SeekBar seekBar, int progress,
            boolean fromUser) {
        Log.i("=========","My SeekBar  = " + seekBar.getId());
        Log.i("=========","My Progress = " + progress);

    }

    @Override
    public void onStartTrackingTouch(SeekBar seekBar) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onStopTrackingTouch(SeekBar seekBar) {
        // TODO Auto-generated method stub

    }});
  l.addView(myView);
}

EDIT:

Чтобы добавить полосы прокрутки, добавьте теги ScrollView вокруг LinearLayout из mymain.xml

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" android:layout_height="wrap_content"
    android:orientation="vertical" android:scrollbars="vertical">
<LinearLayout android:orientation="vertical" android:id="@+id/myMainLayout" android:layout_width="fill_parent"  android:layout_height="wrap_content">
<TextView android:layout_height="wrap_content" android:layout_width="fill_parent" android:text="Family" android:id="@+id/Family" android:textSize="16px" android:padding="5px" android:textStyle="bold" android:gravity="center_horizontal"></TextView>
</LinearLayout>

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