ListView в Android не заполняется - PullRequest
       0

ListView в Android не заполняется

2 голосов
/ 03 сентября 2011

ALL, У меня небольшая проблема. Я пытаюсь создать следующий макет для моего приложения:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <TextView 
    android:id="@+id/output" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"
    android:layout_marginRight="40dp"
    android:layout_marginLeft="40dp"
    android:layout_marginBottom="12dp"
    android:layout_marginTop="50dp"
    android:scaleType="center"
    android:gravity="center_horizontal"
    layout_margin="1dp" 
    android:textSize="18sp" 
    android:text=" " 
     >
    </TextView>
    <ImageView
      android:id="@+id/next"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_alignParentRight="true"
      android:layout_marginRight="50dp"
      android:layout_marginTop="340dp"
      android:src="@drawable/next"
    />
    <ImageView
        android:id="@+id/save"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toLeftOf="@id/next"
        android:layout_marginRight="20dp"
        android:layout_marginTop="340dp"
        android:src="@drawable/save"
    />
    <ListView
        android:id="@+id/filenames"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="40dp"
        android:layout_marginRight="40dp"
        android:drawSelectorOnTop="false"
        android:layout_below="@id/output"
        android:layout_above="@+id/save"
    />
</RelativeLayout>

Тогда в моем источнике я использую следующее:

    test = new ArrayList<String>();
    test.add( "a" );
    test.add( "b" );
    test.add( "c" );
    lv = (ListView) findViewById( R.id.filenames );
    adapter = new ArrayAdapter<String>( this, android.R.layout.simple_list_item_1, test );
    lv.setAdapter( adapter );
    lv.setTextFilterEnabled( true );
    lv.setOnItemClickListener( new OnItemClickListener()
    {
        public void onItemClick(AdapterView<?> parent, View view, int position, long id)
        {
            m_fileclicked = (String) lv.getItemAtPosition( position );
        }
    });

Проблема в том, что я вижу кнопки и текст, но представление списка черное (т.е. пустое).

Код использует активность, а не ListActivity.

Я оглянулся - здесь есть как минимум 3 примера того, как заполнять представление списка при использовании действия, но все они используют некоторые "сумасшедшие" макеты.

Мне просто нужно отобразить простые строки.

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

Спасибо.

Ответы [ 4 ]

1 голос
/ 03 сентября 2011

Сначала вы проверите свой идентификатор кнопки Выход Это Далее ?

    android:layout_below="@id/output"
    android:layout_above="@+id/save"

еще одна вещь m_fileclicked , где вы объявили это. Это строка или нет. пожалуйста, исправьте это.

Вы можете попробовать этот простой пример:

public class ListExample extends Activity
{
 private ListView list;
 private String countries[]={"Nepal","India","China","Norway","germany"};
 @Override
 public void onCreate(Bundle icicle)
    {
   super.onCreate(icicle);
   setContentView(R.layout.main);
   list=(ListView)findViewById(R.id.ListView01);
   list.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1 ,    countries));
  list.setTextFilterEnabled(true);
  list.setOnItemClickListener(new OnItemClickListener() {
      @Override
      public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
      AlertDialog.Builder builder=new AlertDialog.Builder(ListExample.this);
      builder.setTitle(" List Item Demo");
      builder.setMessage("Your Selected Item is = "+list.getItemAtPosition(Position));
      builder.setPositiveButton("Ok", null);
    builder.show();
         }
      });
    }
 }

Вы можете добавить в список только xml-файл, который имеет список ListView01.

1 голос
/ 03 сентября 2011

Ваш код выглядит нормально для меня.

Сначала я лично упростил бы ваш макет (просто в качестве теста) на случай, если ваш ListView скрыт или неправильно расширяется в RelativeLayout.

Я бы поместил ListView в простой LinearLayout в качестве теста и просто установил бы свою ListView высоту и ширину растяжения, и больше ничего в макете:

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

Если ListView отображается правильно, вы знаете, что проблема связана с кодом RelativeLayout, а не с привязкой адаптера.

Полагаю, вы тоже привязываете метод onCreate()?

0 голосов
/ 03 сентября 2011

Ваш TextView заполняет рост родителя, и ваш список находится под этим текстовым представлением. Я думаю, что это проблема. Ваше @id/output текстовое представление должно layout_height="wrap_content".

<TextView 
android:id="@+id/output" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content"

Обновление

Установите красный фон списка, чтобы вы могли четко его различить (просто протестируйте). УДАЛИТЕ layout_marginTop из <ImageView> s и используйте layout_alignParentBottom="true" вместо.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <TextView 
    android:id="@+id/output" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" // should wrap content
    ......./>

    <ImageView
        android:id="@+id/next" 
        .......
        .......  // REMOVE MARGIN TOP
        android:layout_alignParentBottom="true" //align parent bottom
    />
    <ImageView
        android:id="@+id/save" 
        .......
        .......  // REMOVE MARGIN TOP
        android:layout_alignParentBottom="true"  //align parent bottom
    />
    <ListView
        android:id="@+id/filenames"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        .......... />
</RelativeLayout>
0 голосов
/ 03 сентября 2011

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

http://android -pro.blogspot.com / 2010/03 / отн-layout.html

http://developer.android.com/reference/android/widget/RelativeLayout.LayoutParams.html

http://developer.android.com/guide/topics/ui/layout-objects.html

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