Returning values from multiple selection ListView

前端 未结 4 819
一个人的身影
一个人的身影 2021-02-08 14:25

Edit: Okay, I found a solution. Don\'t know that it\'s the proper solution, but it does work correctly. Added to the code below.

I\'m trying to allow a user to select a

4条回答
  •  情歌与酒
    2021-02-08 14:48

    didn't mean to do this as an answer but i had to expand on what you did to do multi select. Why did you do a field variable for your selections? i just did local SparseBooleanArray...

    public class NaughtyAndNice extends ListActivity {
    TextView selection;
    String[] items={"lorem","ipsum", "dolor", "sit", "amet",
            "consectetuer", "adipisc", "jklfe", "morbi", "vel",
            "ligula", "vitae", "carcu", "aliequet"};
    
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        setListAdapter(new ArrayAdapter(this,android.R.layout.simple_list_item_multiple_choice,items));
               selection = (TextView)findViewById(R.id.selection);
        this.getListView().setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
    }
    
    public void onListItemClick(ListView parent, View view, int position, long id){
        SparseBooleanArray choices = parent.getCheckedItemPositions();
        StringBuilder choicesString = new StringBuilder();
        for (int i = 0; i < choices.size(); i++)
        {
        //added if statement to check for true. The SparseBooleanArray
        //seems to maintain the keys for the checked items, but it sets
        //the value to false. Adding a boolean check returns the correct result.                    
            if(choices.valueAt(i) == true)
                choicesString.append(items[choices.keyAt(i)]).append(" ");
    
        } 
        selection.setText(choicesString);
    }
    }
    

提交回复
热议问题