如何将Android Wifi扫描结果放入列表?

我知道如何获取<List>Android Wifi扫描,但我不知道从中制作列表适配器的最佳方法。我只想将SSID和BSSID从<List>扫描的绑定到text1和text2。

我一直在做的样本

wifi.startScan();

// get list of the results in object format ( like an array )

List<ScanResult> results = wifi.getScanResults();`

// loop that goes through list

for (ScanResult result : results) {

Toast.makeText(this, result.SSID + " " + result.level,

Toast.LENGTH_SHORT).show();

和:

private void fillDataFromDb() {

Cursor scanCursor = Db.fetchAllScans();

startManagingCursor(scanCursor);`

// Create an array to specify the fields we want to display in the list

// (only TITLE)

String[] from = new String[] { WifiDbAdapter.KEY_BSSID,

WifiDbAdapter.KEY_SSID };

// and an array of the fields we want to bind those fields to (in this

// case just text1)

int[] to = new int[] { R.id.text1, R.id.text2 };

// Now create a simple cursor adapter and set it to display

SimpleCursorAdapter scansdb = new SimpleCursorAdapter(this,

R.layout.scan_row, scanCursor, from, to);

setListAdapter(scansdb);

}

回答:

试试这个代码

public class WiFiDemo extends Activity implements OnClickListener

{

WifiManager wifi;

ListView lv;

TextView textStatus;

Button buttonScan;

int size = 0;

List<ScanResult> results;

String ITEM_KEY = "key";

ArrayList<HashMap<String, String>> arraylist = new ArrayList<HashMap<String, String>>();

SimpleAdapter adapter;

/* Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState)

{

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

textStatus = (TextView) findViewById(R.id.textStatus);

buttonScan = (Button) findViewById(R.id.buttonScan);

buttonScan.setOnClickListener(this);

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

wifi = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);

if (wifi.isWifiEnabled() == false)

{

Toast.makeText(getApplicationContext(), "wifi is disabled..making it enabled", Toast.LENGTH_LONG).show();

wifi.setWifiEnabled(true);

}

this.adapter = new SimpleAdapter(WiFiDemo.this, arraylist, R.layout.row, new String[] { ITEM_KEY }, new int[] { R.id.list_value });

lv.setAdapter(this.adapter);

registerReceiver(new BroadcastReceiver()

{

@Override

public void onReceive(Context c, Intent intent)

{

results = wifi.getScanResults();

size = results.size();

}

}, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));

}

public void onClick(View view)

{

arraylist.clear();

wifi.startScan();

Toast.makeText(this, "Scanning...." + size, Toast.LENGTH_SHORT).show();

try

{

size = size - 1;

while (size >= 0)

{

HashMap<String, String> item = new HashMap<String, String>();

item.put(ITEM_KEY, results.get(size).SSID + " " + results.get(size).capabilities);

arraylist.add(item);

size--;

adapter.notifyDataSetChanged();

}

}

catch (Exception e)

{ }

}

}

WiFiDemo.xml:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:layout_margin="16dp"

android:orientation="vertical">

<LinearLayout

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:gravity="center_vertical"

android:orientation="horizontal">

<TextView

android:id="@+id/textStatus"

android:layout_width="0dp"

android:layout_height="wrap_content"

android:layout_weight="1"

android:text="Status" />

<Button

android:id="@+id/buttonScan"

android:layout_width="wrap_content"

android:layout_height="40dp"

android:text="Scan" />

</LinearLayout>

<ListView

android:id="@+id/list"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:layout_marginTop="20dp"></ListView>

</LinearLayout>

对于ListView- row.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:orientation="vertical"

android:padding="8dp">

<TextView

android:id="@+id/list_value"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:textSize="14dp" />

</LinearLayout>

AndroidManifest.xml中添加这些权限

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

以上是 如何将Android Wifi扫描结果放入列表? 的全部内容, 来源链接: utcz.com/qa/424760.html

回到顶部