Android, получить проверенные элементы на ListActivity - PullRequest
0 голосов
/ 18 марта 2011

Я использую ListActivity, для которого я получаю точки доступа в диапазоне WIFI и записываю их в список проверки. Я успешно делал это, но я хотел бы получить проверенные элементы, когда я нажимаю на кнопку нижнего колонтитула. Как я могу получить их в массив строк?

Это код:

public class APselection extends ListActivity {
    protected static final String TAG = "teste";
    /** Called when the activity is first created. */
    private TextView mScanList;
    public List<ScanResult> listaAPs; 
    protected WifiManager wifiManager;
    private IntentFilter mWifiStateFilter;
    public String SCAN;
    public String[] SCANed;
    public String scanAP;
    public ListView lv;
    public ListView lv1;
    public List<Long> list = new ArrayList(); 
    public String[] checked;

    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);             

        View footer = View.inflate(this, R.layout.footer, null);           

        wifiManager= (WifiManager)getSystemService(Context.WIFI_SERVICE);

        int i;

        //function to get the APs
        SCANed=handleScanResultsAvailable().split("SPl");

        lv=getListView();
        lv.addFooterView(footer);            

        setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_multiple_choice, SCANed));            

        lv.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
        lv.setTextFilterEnabled(false); 
    }
}

Ответы [ 2 ]

1 голос
/ 18 марта 2011

Есть несколько способов сделать это. Возможно, проще всего реализовать OnClickListener для ListView. Когда пользователь щелкает элемент списка, извлекает строку из выбранного элемента. Храните элементы в ArrayList. Когда пользователь щелкает, если список содержит строку, удалите ее, в противном случае добавьте ее. Bam. Список всех выбранных предметов.

0 голосов
/ 18 марта 2011

Я не думаю, что есть способ напрямую получить проверенный элемент в массив String из ListView, вам нужно пройти промежуточные шаги:

Вы можете использовать ListView.getCheckedItemIds, чтобы получить массив идентификаторов отмеченных элементов. Эти идентификаторы присваиваются вашим списком адаптеров. Поскольку вы используете ArrayAdapter, position = id, то есть вы можете просто использовать ArrayAdapter.getItem (), чтобы получить строку, связанную с каждым отмеченным идентификатором элемента.

Это будет выглядеть так:

btn.setOnClickListener(new OnClickListener() {
  public void onClick(View v) {
    long ids[] = lv.getCheckedItemIds();
    String checkedItems[] = new String[ids.length];
    for (int i=0; i<ids.length; i++)
      checkedItems[i] = adapter.getItem(i);
    //You got your array of checked strings
  }
}

Обратите внимание, что для этого требуется доступ к адаптеру, поэтому вам необходимо назначить свой ArrayAdapter переменной.

...