Android,获取ListActivity上的选中项

时间:2011-03-18 18:46:46

标签: android listactivity

我正在使用ListActivity,因为我获得了WIFI范围内的接入点,并将它们列在了一个清单列表中。 我已经成功地做到了这一点,但是当我点击页脚按钮时,我想得到被解雇的项目。如何将它们转换为String数组?

这是代码:

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 个答案:

答案 0 :(得分:1)

有几种方法可以做到这一点。最简单的可能是为ListView实现OnClickListener。当用户单击列表项时,从单击的项中提取String。将项目存储在ArrayList中。当用户单击时,如果列表包含String,则将其删除,否则添加它。巴姆。所有选定项目的清单。

答案 1 :(得分:0)

我认为没有办法直接从ListView中将已检查项目转换为String数组,您必须经过中间步骤:

您可以使用ListView.getCheckedItemIds获取已检查项目的ID数组。这些ID由列表适配器分配。由于您使用的是ArrayAdapter,position = id,因此您只需使用ArrayAdapter.getItem()来获取与每个已检查项ID相关联的String。

这看起来像是:

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分配给变量。