2013-11-13 2 views
0

Я новичок в программировании для Android, и у меня все еще есть несколько вещей, которые я не понимаю. Например, я с программой, которая, когда вы нажимаете на кнопку, пытается найти любые устройства рядом. Проблема в том, что я не знаю, как решить ошибку, которую я, похоже, сделал с самого начала. Это то, что я имеюОшибка setListAdapter в простой программе

Это основной вид деятельности:

import java.util.ArrayList; 
import java.util.List; 
import java.util.Set; 
import android.app.Activity; 
import android.bluetooth.BluetoothAdapter; 
import android.bluetooth.BluetoothDevice; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.View; 
import android.widget.ArrayAdapter; 

public class MainActivity extends Activity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 

public void buscar(View view){ 
    BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); 
    Set<BluetoothDevice> pairedDevices = mBluetoothAdapter.getBondedDevices(); 
    List<String> s = new ArrayList<String>(); 
    for(BluetoothDevice bt : pairedDevices) 
     s.add(bt.getName());  
    setListAdapter(new ArrayAdapter<String>(this, R.id.list, s)); 
} 
} 

А вот файл XML

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/RelativeLayout1" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
tools:context=".MainActivity" > 

<Button 
    android:id="@+id/botonvinculo" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentTop="true" 
    android:clickable="true" 
    android:onClick="buscar" 
    android:text="Buscar dispositivos" /> 

<ListView 
    android:id="@+id/list" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignLeft="@+id/botonvinculo" 
    android:layout_below="@+id/botonvinculo" > 
</ListView> 

</RelativeLayout> 

Дело в том, что я не могу сделать вызов setListAdapter если не мой основной деятельности простирается от ListActivity и даже пытается так, он возвращает ошибку: «У вас должен быть ListView, чей атрибут« android.R.id.list ».

Буду признателен за любую помощь. Нк вы очень.

ответ

0

setListAdapter будет работать только тогда, когда ваша деятельность продолжается от ListActivity. использовать это в вашем случае

listview.setAdapter(); 

, если вы хотите использовать setListAdapter() только внести изменения эти вещи

public class MainActivity extends Activity 

в

public class MainActivity extends ListActivity 

и android:id="@android:id/list" for your list view in xml

2

Если вы используете ListActivity, то вы должны использовать android:id="@android:id/list" в вашем XML вместо android:id="@+id/list" , иначе вы можете получить объект ListView в вашем XML, как

ListView list = (ListView) findViewById(R.id.list);

, а затем использовать list.setAdapter

0

Ваш класс расширяет Activity. setListAdapter представляет собой метод ListActivity

ListView lv; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_main); 
lv = (ListView)findViewById(R.id.list); 
} 

Затем

public void buscar(View view){ 
    BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); 
    Set<BluetoothDevice> pairedDevices = mBluetoothAdapter.getBondedDevices(); 
    List<String> s = new ArrayList<String>(); 
    for(BluetoothDevice bt : pairedDevices) 
     s.add(bt.getName());  
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple.list_item_1,s); 
    lv.setAdapter(adapter); 
} 
Смежные вопросы