从listview连接到网络

时间:2014-02-22 17:34:11

标签: android listview onclick wifi connect

请参阅下面的代码。这将生成包含所有可用wificonnections的列表视图。 我的目标是连接到列出的那些可用连接之一。 我尝试了几件事,但不能正常工作。 这是关于使用正确的代码填充listview的onclick属性。 有人可以帮帮我吗?提前谢谢!

package com.example.wifitester2;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.wifi.ScanResult;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.Button;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.Toast;

   public class Main 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);
    lv.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                long arg3) 
        {
            //Method to connect to the listview item
        }

    });

    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(Main.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)
    { }         
}    
 }

1 个答案:

答案 0 :(得分:0)

试试这个

@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
        long arg3) 
{
    connectToWifi(arg2);
}

private void connectToWifi(int position)
{
    HashMap<String, String> item = arraylist.get(position);

    //get SSID and BSSID from item

    WifiConfiguration wifiConfiguration = new WifiConfiguration(); 
    wifiConfiguration.SSID = itemSSID; 
    wifiConfiguration.allowedKeyManagement.set(KeyMgmt.NONE); 
    wifiConfiguration.BSSID = itemBSSID; //you should also put the BSSID in the map
    wifiConfiguration.hiddenSSID = false; 

    int inetId = wifiManager.addNetwork(wifiConfiguration); 
    wifiManager.enableNetwork(inetId, true);
}