0

我需要扫描可用的 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 是什么,因为我在它们上遇到错误。有人可以帮我解决这个问题吗?谢谢。

4

1 回答 1

2

但我无法在上帝的名字中找到 R.layout.wifi_item 和 R.id.list_value,因为我得到了错误。有人可以帮我解决这个问题吗?谢谢。

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

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

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

请显示一个包含 WiFi 网络名称的简单字符串,您可以为您的 List-Adapter 使用 Android 预定义的布局“android.R.layout.simple_list_item_1”。

于 2013-08-08T17:42:43.337 回答