package hillfly.wifichat.adapter; import hillfly.wifichat.R; import hillfly.wifichat.consts.WifiApConst; import hillfly.wifichat.util.WifiUtils; import java.util.List; import android.content.Context; import android.net.wifi.ScanResult; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView; import com.squareup.picasso.Picasso; public class WifiapAdapter extends BaseAdapter { private LayoutInflater mInflater; private List<ScanResult> mDatas; private Context mContext; private boolean isWifiConnected; public WifiapAdapter(Context context, List<ScanResult> list) { super(); this.mDatas = list; this.mInflater = LayoutInflater.from(context); this.mContext = context; this.isWifiConnected = false; } // 新加的一个函数,用来更新数据 public void setData(List<ScanResult> list) { this.mDatas = list; } @Override public int getCount() { if (mDatas == null) { return 0; } return mDatas.size(); } @Override public Object getItem(int position) { return mDatas.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(final int position, View convertView, ViewGroup parent) { ScanResult ap = mDatas.get(position); ViewHolder viewHolder = null; isWifiConnected = false; if (convertView == null) { viewHolder = new ViewHolder(); convertView = mInflater.inflate(R.layout.listitem_wifiap, null); viewHolder.rssi = ((ImageView) convertView.findViewById(R.id.wifiap_item_iv_rssi)); viewHolder.ssid = ((TextView) convertView.findViewById(R.id.wifiap_item_tv_ssid)); viewHolder.desc = ((TextView) convertView.findViewById(R.id.wifiap_item_tv_desc)); convertView.setTag(viewHolder); } else { viewHolder = (ViewHolder) convertView.getTag(); } if (WifiUtils.isWifiConnect() && ap.BSSID.equals(WifiUtils.getBSSID())) { isWifiConnected = true; } viewHolder.ssid.setText(ap.SSID); viewHolder.desc.setText(getDesc(ap)); Picasso.with(mContext).load(getRssiImgId(ap)).into(viewHolder.rssi); return convertView; } private String getDesc(ScanResult ap) { String desc = ""; if (ap.SSID.startsWith(WifiApConst.WIFI_AP_HEADER)) { desc = "专用网络,可以直接连接"; } else { String descOri = ap.capabilities; if (descOri.toUpperCase().contains("WPA-PSK") || descOri.toUpperCase().contains("WPA2-PSK")) { desc = "受到密码保护"; } else { desc = "未受保护的网络"; } } // 是否连接此热点 if (isWifiConnected) { desc = "已连接"; } return desc; } private int getRssiImgId(ScanResult ap) { int imgId; if (isWifiConnected) { imgId = R.drawable.ic_connected; } else { int rssi = Math.abs(ap.level); if (rssi > 100) { imgId = R.drawable.ic_small_wifi_rssi_0; } else if (rssi > 80) { imgId = R.drawable.ic_small_wifi_rssi_1; } else if (rssi > 70) { imgId = R.drawable.ic_small_wifi_rssi_2; } else if (rssi > 60) { imgId = R.drawable.ic_small_wifi_rssi_3; } else { imgId = R.drawable.ic_small_wifi_rssi_4; } } return imgId; } public static class ViewHolder { public ImageView rssi; public TextView ssid; public TextView desc; } }