如何创建自定义列表视图以扫描可用的wifi设备?

时间:2017-01-11 06:57:56

标签: android listview arraylist

我有一个图像和两个文本视图,一个用于Wifi SSID,另一个用于BSSID(MAC)。 当我点击扫描按钮时,如何使用自动获取数据的自定义数组适配器创建自定义列表视图? 我是新来的两个人,几天后我就陷入了困境。

2 个答案:

答案 0 :(得分:0)

获取任何wifi数据的数据时,应该制作适配器并设置适配器列表视图。在这种情况下,您的listview会更新任何搜索数据。

答案 1 :(得分:0)

尝试从以下代码中找出:

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) 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)
    { }         
}    
}