как отобразить уровень сигнала wifi в картинке

Ответить
Рустам
Сообщения: 1
Зарегистрирован: 14 сен 2013, 17:21

как отобразить уровень сигнала wifi в картинке

Сообщение Рустам » 14 сен 2013, 17:28

Код: Выделить всё

 @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
       
        
        buttonScan = (Button) findViewById(R.id.buttonScan);
        //buttonScan.setOnClickListener(this);
        lv = (ListView) findViewById(R.id.listView);
 
        wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
        if (wifi.isWifiEnabled() == false) {
            Toast.makeText(getApplicationContext(), "wifi is disabled", Toast.LENGTH_LONG).show();
            wifi.setWifiEnabled(true);
        }
        this.adapter = new SimpleAdapter(MainActivity.this, arraylist, R.layout.row, new String[] { ITEM_KEY,ITEM_KEY2,ITEM_KEY3 }, new int[] { R.id.text1,R.id.text2, R.id.icon });
        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 onClickref(View view) {
        arraylist.clear();
        wifi.startScan();
        // get list of the results in object format ( like an array )

        
        
        
        
        
        try {
            size = size - 1;
            while (size >= 0) {
            	
   
            	 
                HashMap<String, String> item = new HashMap<String, String>();
                
                item.put(ITEM_KEY, results.get(size).SSID);
                item.put(ITEM_KEY2, results.get(size).capabilities);
                
                
                //if (results.get(size).level) item.put(ITEM_KEY3,  "" + R.drawable.ic_menu_refresh);
                
                //item.put(ITEM_KEY3, "Level: " + results.get(size).level);
                //item.put(ITEM_KEY3, "ic_wifi");
                //item.put(ITEM_KEY, results.get(size).SSID + "  " + results.get(size).capabilities);
                
                arraylist.add(item);
                size--;
                adapter.notifyDataSetChanged();
            }
        } catch (Exception e) {}
        }
    
}
        
        
        
        
        
мне нужно отобразить if (results.get(size).level == "50") { item.put(ITEM_KEY3, "" + R.drawable.ic_wifi_50);}
чтоб от уровня сигнала менялась картинка в row.xml в зависимости от сигнала =)

файл row.xml

Код: Выделить всё

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    tools:ignore="ContentDescription,ExtraText,SpUsage,HardcodedText,MangledCRLF" >


    <LinearLayout
        android:layout_width="260dip"
        android:layout_height="wrap_content"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/text1"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="@+id/text1"
            android:textSize="15dip" 
            android:textStyle="bold"/>
 
        <TextView
            android:id="@+id/text2"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:textSize="12dip" 
            android:text="@+id/text2" />
    </LinearLayout>

    <ImageView
        android:id="@+id/icon"
        android:layout_width="29dp"
        android:layout_height="29dp"
        android:layout_gravity="right|center_vertical"/>

</LinearLayout>

Аватара пользователя
adarash
Сообщения: 333
Зарегистрирован: 17 июл 2013, 09:59

Re: как отобразить уровень сигнала wifi в картинке

Сообщение adarash » 23 сен 2013, 11:33

Не получится. Адаптер нужно будет отдельным классом писать. SimpleAdapter на то он и Simple. Пиши 2 отдельных класс. Первый - это один item у которого пропиши метод который устанавливал бы картинку. Второй - это какой нибудь BaseAdapter который бы выводил твои item и там обязательно пропиши каждому элементу item свой id по которому ты будешь добираться до item и устанавливать ему нужную картинку. И в итоге у тебя получится что-то типа item.findViewById(id).setImage( R.drawable.ic_wifi_50).
Короче говоря сложность твоего кода вырастет в разы и вот так на пальцах фиг подробно объяснишь.

Ответить