2010-10-16 4 views
0

У меня есть следующий main.xml:Отображение списка элементов в ListView

<?xml version="1.0" encoding="utf-8"?> 
<AbsoluteLayout 
android:id="@+id/widget0" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
xmlns:android="http://schemas.android.com/apk/res/android" 
> 
    <ListView 
    android:id="@+id/listview" 
    android:layout_width="315px" 
    android:layout_height="379px" 
    android:layout_x="2px" 
    android:layout_y="50px" 
    > 
    </ListView> 
    <TextView 
    android:id="@+id/title" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Select device:" 
    android:textSize="17sp" 
    android:layout_x="-2px" 
    android:layout_y="1px" 
    > 
    </TextView> 
    <Button 
    android:id="@+id/refresh" 
    android:layout_width="109px" 
    android:layout_height="wrap_content" 
    android:text="Refresh" 
    android:layout_x="209px" 
    android:layout_y="7px" 
    > 
    </Button> 
</AbsoluteLayout> 

Основной класс не делает ничего, кроме рисования макета.

У меня есть следующий класс и раскладку ListItems:

<?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> 

package com.android.bluetoothp2p; 

import android.app.ListActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.AdapterView.OnItemClickListener; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 
import android.widget.TextView; 
import android.widget.Toast; 

public class BTListView extends ListActivity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item, COUNTRIES)); 

     ListView lv = getListView(); 
     lv.setTextFilterEnabled(true); 

     lv.setOnItemClickListener(new OnItemClickListener() { 
     public void onItemClick(AdapterView<?> parent, View view, 
      int position, long id) { 
      // When clicked, show a toast with the TextView text 
      Toast.makeText(getApplicationContext(), ((TextView) view).getText(), 
       Toast.LENGTH_SHORT).show(); 
     } 
     }); 
    } 

Страны только массив со списком стран, в некоторых фиктивных ценностей.

Как я могу сделать элементы списка класса BTListView в ListView (с @ + id/listview) основного класса?

EDIT: теперь мой список работает, но он больше не доступен для контакта. Это код:

ListView lv = getListView(); 
     lv.setTextFilterEnabled(true); 

     lv.setOnItemClickListener(new OnItemClickListener() { 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
      // When clicked, show a toast with the TextView text 
      Toast.makeText(getApplicationContext(), "lolwat", Toast.LENGTH_SHORT).show(); 
     } 
     }); 

ответ

2

Вы должны дать ID @android: ID/список вашего ListView в макете - см http://developer.android.com/reference/android/app/ListActivity.html для деталей. Этот идентификатор используется классом ListActivity для поиска экземпляра ListView.

+0

Спасибо, добавив элементы в список, а затем создав основной макет, который перечислил список в список с указанным вами идентификатором. –

+0

Тем не менее, это делает элементы списка unclickable –

+0

Да, я думаю, вы должны переопределить метод onListItemClick() в своей активности, чем установить пользовательский обработчик: http://developer.android.com/reference/android/app/ListActivity. html # onListItemClick% 28android.widget.ListView,% 20android.view.View,% 20int,% 20long% 29 – mreichelt