[英]Error setListAdapter in simple program
我是Android編程的新手,我還有一些我不理解的東西。 例如,我正在使用一個程序,當您單擊按鈕時,它會嘗試查找附近的任何設備。 問題是我不知道如何解決我似乎從開始做出的錯誤。 這就是我所擁有的
這是主要活動:
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“。
我很感激任何幫助。 非常感謝你。
如果您使用ListActivity
那么您應該在XML中使用android:id="@android:id/list"
而不是android:id="@+id/list"
,否則您可以在XML中獲取ListView
的對象
ListView list = (ListView) findViewById(R.id.list);
然后使用list.setAdapter
只有當您的活動從ListActivity
擴展時, setListAdapter
才會起作用。 在你的情況下使用它
listview.setAdapter();
如果你想使用setListAdapter()只做改變這些事情
public class MainActivity extends Activity
至
public class MainActivity extends ListActivity
和android:id="@android:id/list" for your list view in xml
您的類擴展了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);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.