Добавить просмотр списка и линейное расположение внутри Android ListActivity - PullRequest
1 голос
/ 01 февраля 2011

Я использую ListActivity для настройки моего списка. Что я хочу сделать, так это показать список в верхней части и линейное расположение в нижней части родительского элемента.

Поскольку я использую ListActivity, я не выкладываю никакой файл макета. Тем не менее, мне удалось получить экземпляр списка, но когда я пытаюсь установить его в linearLayout, я получаю сообщение об ошибке:

java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first

Я использую следующий код:

  final ListView lv = getListView();    

  LinearLayout root = new LinearLayout(this);
  root.setOrientation(LinearLayout.VERTICAL);
  root.setLayoutParams(new LayoutParams(
  LinearLayout.LayoutParams.FILL_PARENT,
  LinearLayout.LayoutParams.FILL_PARENT));

  root.addView(lv);
  setContentView(root);

Кто-нибудь может помочь, пожалуйста?

Спасибо заранее.

Ответы [ 2 ]

1 голос
/ 01 февраля 2011

Вы должны использовать пользовательский макет с ListActivity.

Вот учебник: http://www.softwarepassion.com/android-series-custom-listview-items-and-adapters/

0 голосов
/ 01 февраля 2011

что вам нужно сделать, это определить свой пользовательский макет, не имеет значения, всегда ли ListActivity, что ваш пользовательский XML-макет имеет один ListView с id: android: id = "@ android: id / list"

Я определил свой макет активности следующим образом:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:orientation="vertical"
  android:background="@drawable/background_new_search_activity_1">

    <include layout="@layout/generic_header_layout" android:id="@+id/listaBusquedasHeader"/>

    <ListView
        android:id="@android:id/list"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:cacheColorHint="#00000000"/>

</LinearLayout>

позже в моей деятельности создать определил макет выше:

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);

        setContentView(R.layout.lista_busquedas_activity);
        listView = (ListView) findViewById(android.R.id.list);
        listView.setOnItemClickListener(listItemListener);
        ((TextView)findViewById(R.id.genericHeaderTitle)).setText(R.string.listaBusquedasGuardadasTitle);

        if(LoginManager.getInstance().existeUsuarioValidoLogueado()){
            aTask = new AsynchronousTask(this, AsynchronousTask.MODE_STRING, handler, OBTENER_BUSQUEDAS_GUARDADAS);
            aTask.execute( OperationsFacadeManager.obtenerBusquedasGuardadas(1) );
        }else{
            Toast.makeText(this, R.string.genericErrorUserNotLogged, Toast.LENGTH_SHORT);
        }
    }

вот и все, ребята

...