title: How to add radio buttons on the list
body: <p>I developed a shopping list app following <a href="http://www.javacjava.com/AndroidTutorials.aspx" rel="nofollow">this</a> tutorial. Now after completing the whole tutorial i want to add radio button to every list of items so that it can be helpful to know which items are already purchased from the shopping list. But I do not have proper idea how that is done. if you can guide me that would be helpful.</p>
  
  <p><strong>Here is my Source Code</strong></p>
  
  <pre><code>package com.dopenets.myapplication;
  
  import android.os.Bundle;
  import android.support.v7.app.AppCompatActivity;
  import android.support.v7.widget.Toolbar;
  import android.view.Menu;
  import android.view.MenuItem;
  import android.widget.ArrayAdapter;
  import android.widget.ListView;
  
  import java.util.ArrayList;
  import java.util.Collections;
  
  import java.util.HashSet;
  import java.util.Set;
  import android.app.AlertDialog;
  import android.widget.EditText;
  import android.content.DialogInterface;
  import android.content.Context;
  import android.content.SharedPreferences;
  import android.app.Activity;
  
  import android.widget.Toast;
  import android.widget.AdapterView;
  import android.widget.TextView;
  import android.view.View;
  
  public class MainActivity extends AppCompatActivity {
      ArrayList&lt;String&gt; shoppingList = null;
      ArrayAdapter&lt;String&gt; adapter = null;
      ListView lv = null;
  
      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);
          Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
          setSupportActionBar(toolbar);
  
  
          shoppingList = getArrayVal(getApplicationContext());
          Collections.sort(shoppingList);
          adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, shoppingList);
          lv = (ListView) findViewById(R.id.listView);
          lv.setAdapter(adapter);
  
          lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
              public void onItemClick(AdapterView parent, View view, final int position, long id) {
                  String selectedItem = ((TextView) view).getText().toString();
                  if (selectedItem.trim().equals(shoppingList.get(position).trim())) {
                      removeElement(selectedItem, position);
                  } else {
                      Toast.makeText(getApplicationContext(),"Error Removing Element", Toast.LENGTH_LONG).show();
                  }
              }
          });
  
  
      }
  
      @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_main, 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();
  
          if (id == R.id.action_add){
              AlertDialog.Builder builder = new AlertDialog.Builder(this);
              builder.setTitle("Add Item");
              final EditText input = new EditText(this);
              builder.setView(input);
              builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
                  @Override
                  public void onClick(DialogInterface dialog, int which) {
                      shoppingList.add(preferredCase(input.getText().toString()));
                      Collections.sort(shoppingList);
                      storeArrayVal(shoppingList, getApplicationContext());
                      lv.setAdapter(adapter);
                  }
              });
              builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                  @Override
                  public void onClick(DialogInterface dialog, int which) {
                      dialog.cancel();
                  }
              });
              builder.show();
              return true;
          }
  
  
          return super.onOptionsItemSelected(item);
      }
  
      public static String preferredCase (String original)
      {
          if (original.isEmpty())
              return original;
          return original.substring(0,1).toUpperCase() + original.substring(1).toLowerCase();
      }
  
      public static void storeArrayVal( ArrayList&lt;String&gt; inArrayList, Context context)
      {
          Set&lt;String&gt; WhatToWrite = new HashSet&lt;String&gt;(inArrayList);
          SharedPreferences WordSearchPutPrefs = context.getSharedPreferences("dbArrayValues", Activity.MODE_PRIVATE);
          SharedPreferences.Editor prefEditor = WordSearchPutPrefs.edit();
          prefEditor.putStringSet("myArray", WhatToWrite);
          prefEditor.commit();
      }
  
      public static ArrayList getArrayVal( Context dan)
      {
          SharedPreferences WordSearchGetPrefs = dan.getSharedPreferences("dbArrayValues",Activity.MODE_PRIVATE);
          Set&lt;String&gt; tempSet = new HashSet&lt;String&gt;();
          tempSet = WordSearchGetPrefs.getStringSet("myArray", tempSet);
          return new ArrayList&lt;String&gt;(tempSet);
      }
  
      public void removeElement(String selectedItem, final int position){
          AlertDialog.Builder builder = new AlertDialog.Builder(this);
          builder.setTitle("Remove " + selectedItem + "?");
          builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
              @Override
              public void onClick(DialogInterface dialog, int which) {
                  shoppingList.remove(position);
                  Collections.sort(shoppingList);
                  storeArrayVal(shoppingList, getApplicationContext());
                  lv.setAdapter(adapter);
              }
          });
          builder.setNegativeButton("No", new DialogInterface.OnClickListener() {
              @Override
              public void onClick(DialogInterface dialog, int which) {
                  dialog.cancel();
              }
          });
          builder.show();
      }
  }
  </code></pre>