如何扫描wifi网络并在列表视图中列出它们



我需要扫描可用的wifi网络,并在可点击的列表视图中列出它们。使用我在网上找到的一些教程,并由这里的许多人重复,我成功地完成了这个代码:

public class Wifi_list extends Activity implements OnClickListener
 {      
    WifiManager wifi;       
    ListView lv;
    TextView textStatus;
    Button buttonScan;
    Switch enable;
    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.wifi_list);
        buttonScan = (Button) findViewById(R.id.button1);
        buttonScan.setOnClickListener(this);
        lv = (ListView)findViewById(R.id.listView1);
        wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
        enable.setChecked(wifi.isWifiEnabled());
        enable.setOnCheckedChangeListener(new OnCheckedChangeListener() {
            public void onCheckedChanged(CompoundButton compoundbutton, boolean flag) {
                wifi.setWifiEnabled(flag);
                if(flag){
                    arraylist.clear();
                    lv.setVisibility(View.VISIBLE);
                    buttonScan.setEnabled(true);
                    wifi.startScan();
                }else{
                    lv.setVisibility(View.INVISIBLE);
                    buttonScan.setEnabled(false);
                }
            }
        });
        this.adapter = new SimpleAdapter(Wifi_list.this, arraylist, R.layout.wifi_item, new String[] { ITEM_KEY }, new int[] { R.id.list_value });
        lv.setAdapter(this.adapter);
        lv.setOnClickListener(new View.OnClickListener() {
            public void onClick(View view) {
                int a = lv.getSelectedItemPosition();
            }
        });
        registerReceiver(new BroadcastReceiver()
        {
            @Override
            public void onReceive(Context c, Intent intent) 
            {
               results = wifi.getScanResults();
               size = results.size();
               for(int i=size-1;i>=0;i--){
                   HashMap<String, String> item = new HashMap<String, String>();                       
                   item.put(ITEM_KEY, results.get(i).SSID);
                   arraylist.add(item);
               }
               if(size>0)
                   adapter.notifyDataSetChanged();
            }
        }, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));                    
    }
    public void onClick(View view) 
    {
        arraylist.clear();          
        wifi.startScan();
        Toast.makeText(this, "Scanning....", Toast.LENGTH_SHORT).show();
    }    
}

但是我找不到R.layout.wifi_item和R.id.list_value是什么,因为我在它们上面有错误。有人能帮我弄清楚吗?谢谢

但我在哪里都找不到R.layout.wifi_item和R.id.list_value,因为我在它们上面有错误。有人能帮我吗弄清楚了吗?谢谢

您命名的文件是布局文件,在.xml 中定义

它们可以包含UI组件,例如您要用来显示WiFi网络的ListView。

在您的示例中,您有2个布局文件。一个是R.layout.wifi_list,它包含一个按钮(button1)和一个ListView(listView1)。另一个是R.layout.wifi_item,这是一个自定义布局文件,表示ListView中一个条目的布局。

显示一个包含WiFi网络名称的简单字符串,您可以使用Android预定义布局"Android.R.layout.simple_list_item_1"作为您的列表适配器。

最新更新