0

利用可能な Wi-Fi ネットワークをスキャンし、クリック可能なリストビューに一覧表示する必要があります。オンラインで見つけたいくつかのチュートリアルを使用して、ここで多くの人が繰り返し、このコードを完成させることができました。

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 で定義されたレイアウト ファイルです。

WiFi ネットワークを表示するために使用する ListView などの UI コンポーネントを含めることができます。

あなたの例では、2 つのレイアウト ファイルがあります。1 つは、ボタン (button1) と ListView (listView1) を含む R.layout.wifi_list です。もう 1 つは R.layout.wifi_item で、ListView 内の 1 つのエントリのレイアウトを表すカスタム レイアウト ファイルです。

WiFi ネットワークの名前を含む単純な文字列を表示します。List-Adapter に Android で事前定義されたレイアウト「android.R.layout.simple_list_item_1」を使用できます。

于 2013-08-08T17:42:43.337 に答える