获取Listview中所有复选框的列表

时间:2013-03-09 04:29:27

标签: java android listview checkbox

我有一个复选框的列表视图,由休假创建。

    public void addCard(final String cardId){
    ListView listView1;
    Lists movielist = new Lists();
    List<String> movies = new ArrayList<String>();      
    movies = movielist.movieList();

    listView1 = (ListView)findViewById(R.id.listView1);

    listView1.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_multiple_choice, movies));
    listView1.setItemsCanFocus(false);
    listView1.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);



    listView1.setOnItemClickListener(new OnItemClickListener() {
    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {


    CheckedTextView ctv = (CheckedTextView)arg1;        
    Toast.makeText(getApplicationContext(),ctv.getText().toString(), Toast.LENGTH_SHORT).show();
    //do your stuff in here!        
    }   
    });

    Button submit = (Button)findViewById(R.id.button1);
    submit.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {
            Toast.makeText(getApplicationContext(),"", Toast.LENGTH_SHORT).show();

        }
     });
}

现在当检查一个框时,我可以向与复选框关联的文本烘烤。我希望能够做的是与点击提交时检查的所有框相关联的文本。

理想情况下,我想要一个List,每个值都是与复选框关联的文本块之一。

干杯!

1 个答案:

答案 0 :(得分:1)

在SparseBooleanArray中返回已检查的视图,因此您可以使用下面的代码来获取键或值。下面的示例只是在一个String中显示所选的名称。

@Override
public void onItemClick(AdapterView<?> adapter, View arg1, int arg2, long arg3)
{

       SparseBooleanArray sp=getListView().getCheckedItemPositions();

     String str="";
       for(int i=0;i<sp.size();i++)
       {
           str+=movies.get(sp.keyAt(i))+",";
        }
      Toast.makeText(this, ""+str, Toast.LENGTH_SHORT).show();

 }

我认为这就是你想要的。