package com.gathr.gathr; import android.content.Intent; import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.util.SparseBooleanArray; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.ArrayAdapter; import android.widget.Button; import android.util.Log; import android.widget.ListView; import org.json.JSONArray; import org.json.JSONException; public class ListViewMultipleSelectionActivity extends ActionBarActivity { Button button; ListView listView; ArrayAdapter<String> adapter; QueryDB DBconn = new QueryDB(this, AuthUser.fb_id, AuthUser.user_id); public String userId = AuthUser.user_id, output="", results, checkedId=""; public String[] categoryName; public String[] categoryId; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_list_view_multiple_selection); findViewsById(); Intent i = getIntent(); String userCategoryId = i.getStringExtra("categoryId"); String[] selectedCategoryId = userCategoryId.split(","); try { DBconn.executeQuery("SELECT Id,Name FROM CATEGORIES;"); results = DBconn.getResults(); JSONArray json; try { json = new JSONArray(results); int n = json.length(); categoryId = new String[n]; categoryName = new String[n]; for(int j=0;j<n;j++) { categoryId[j] = json.getJSONObject(j).getString("Id"); categoryName[j] = json.getJSONObject(j).getString("Name"); } } catch (JSONException e) { e.printStackTrace(); } }catch(GathrException e){ Log.i("Exception", e.error); } adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_multiple_choice, categoryName); listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); listView.setAdapter(adapter); if(selectedCategoryId[0]!="" ) { for(int j=0;j<selectedCategoryId.length;j++) { listView.setItemChecked(Integer.valueOf(selectedCategoryId[j])-1,true); } adapter.notifyDataSetChanged(); } } private void findViewsById() { listView = (ListView) findViewById(R.id.list); button = (Button) findViewById(R.id.testbutton); } public void onSubmit(View v) { SparseBooleanArray checked = listView.getCheckedItemPositions(); //ArrayList<String> selectedItems = new ArrayList<String>(); for (int i = 0; i < checked.size(); i++) { // Item position in adapter int position = checked.keyAt(i); // Add sport if it is checked i.e.) == TRUE! if (checked.valueAt(i)) { // selectedItems.add(adapter.getItem(position)); output = output+ adapter.getItem(position) + ", ";//selectedItems.get(i)+", "; checkedId = checkedId+categoryId[position]+","; } } output = output.substring(0, output.length()-2); // checkedId = checkedId.substring(0, checkedId.length()-1); Log.i("Check:","Checked: "+checkedId); Intent intent = new Intent(getApplicationContext(), EditProfile.class); intent.putExtra("categoryId",checkedId); intent.putExtra("category",output); // start the ResultActivity startActivity(intent); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu_list_view_multiple_selection, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); //noinspection SimplifiableIfStatement if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } }