簡體   English   中英

簡單程序中的setListAdapter錯誤

[英]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 setListAdapterListActivity一種方法

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM