shlist

share and manage lists between multiple people
Log | Files | Refs

ListScreen.java (6988B)


      1 package drsocto.shlist;
      2 
      3 import android.content.Context;
      4 import android.content.Intent;
      5 import android.support.v7.app.ActionBarActivity;
      6 import android.os.Bundle;
      7 import android.util.Log;
      8 import android.view.LayoutInflater;
      9 import android.view.Menu;
     10 import android.view.MenuItem;
     11 import android.view.View;
     12 import android.view.ViewGroup;
     13 import android.widget.AdapterView;
     14 import android.widget.ArrayAdapter;
     15 import android.widget.CheckBox;
     16 import android.widget.ListView;
     17 import android.widget.Switch;
     18 import android.widget.TextView;
     19 
     20 import java.util.ArrayList;
     21 
     22 
     23 public class ListScreen extends ActionBarActivity {
     24     ArrayList<String> list1;
     25     ArrayList<String> list1a;
     26     ArrayList<String> list1b;
     27     ArrayList<String> list2;
     28 
     29     ArrayAdapter<String> adapter1;
     30     ArrayAdapter<String> adapter2;
     31 
     32     TextView cListsTV;
     33     TextView oListsTV;
     34 
     35 
     36     @Override
     37     protected void onCreate(Bundle savedInstanceState) {
     38         super.onCreate(savedInstanceState);
     39         setContentView(R.layout.layout_list_screen);
     40 
     41         Intent intent = getIntent();
     42         String listName = intent.getStringExtra(HomeScreen.SELECTED_LIST);
     43 
     44         setTitle(listName);
     45 
     46         // Shared items
     47         list1 = new ArrayList<String>();
     48         list1a = new ArrayList<String>();
     49         list1b = new ArrayList<String>();
     50         list1.add("Axe");
     51         list1a.add("4");
     52         list1b.add("Jeb");
     53 
     54         adapter1 = new MyCustomAdapter(this, R.layout.item_row, list1, list1a, list1b);
     55 
     56         ListView lv1 = (ListView) findViewById(R.id.sharedItems);
     57 
     58         list2 = new ArrayList<String>();
     59         list2.add("Space Muffins");
     60 
     61         adapter2 = new ArrayAdapter<String>(this, R.layout.item_row, R.id.itemName, list2);
     62 
     63         ListView lv2 = (ListView) findViewById(R.id.privateItems);
     64         lv2.setOnItemClickListener(new AdapterView.OnItemClickListener() {
     65             @Override
     66             public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
     67                 String name = adapter2.getItem(position);
     68                 list2.remove(position);
     69                 list1.add(name);
     70                 adapter1.notifyDataSetChanged();
     71                 adapter2.notifyDataSetChanged();
     72             }
     73         });
     74 
     75         cListsTV = (TextView) findViewById(R.id.sharedItemsTV);
     76         oListsTV = (TextView) findViewById(R.id.privateItemsTV);
     77 
     78         cListsTV.setText("Shared Items (" + list1.size() + ")");
     79         oListsTV.setText("Private Items (" + list2.size() + ")");
     80 
     81         lv1.setAdapter(adapter1);
     82         lv2.setAdapter(adapter2);
     83     }
     84 
     85     public void addListItem() {
     86         list2.add("Foobar");
     87         adapter2.notifyDataSetChanged();
     88     }
     89 
     90     @Override
     91     public boolean onCreateOptionsMenu(Menu menu) {
     92         // Inflate the menu; this adds items to the action bar if it is present.
     93         getMenuInflater().inflate(R.menu.menu_list_screen, menu);
     94         return true;
     95     }
     96 
     97     @Override
     98     public boolean onOptionsItemSelected(MenuItem item) {
     99         // Handle action bar item clicks here. The action bar will
    100         // automatically handle clicks on the Home/Up button, so long
    101         // as you specify a parent activity in AndroidManifest.xml.
    102         int id = item.getItemId();
    103 
    104         //noinspection SimplifiableIfStatement
    105         if (id == R.id.action_settings) {
    106             return true;
    107         } if(id == R.id.action_add) {
    108             addListItem();
    109         }
    110 
    111         return super.onOptionsItemSelected(item);
    112     }
    113 
    114 
    115 
    116 
    117     private class MyCustomAdapter extends ArrayAdapter<String> {
    118 
    119         private ArrayList<String> nlist;
    120         private ArrayList<String> qlist;
    121         private ArrayList<String> olist;
    122 
    123         public MyCustomAdapter(Context context, int textViewResourceId,
    124                                ArrayList<String> nlist, ArrayList<String> qlist, ArrayList<String> olist) {
    125             super(context, textViewResourceId, nlist);
    126             this.nlist = new ArrayList<String>();
    127             this.nlist.addAll(nlist);
    128             this.olist = new ArrayList<String>();
    129             this.olist.addAll(olist);
    130             this.qlist = new ArrayList<String>();
    131             this.qlist.addAll(qlist);
    132         }
    133 
    134         private class ViewHolder {
    135             TextView name;
    136             TextView quantity;
    137             TextView owner;
    138             Switch complete;
    139         }
    140 
    141         @Override
    142         public View getView(final int position, View convertView, ViewGroup parent) {
    143 
    144             ViewHolder viewHolder = null;
    145             Log.v("ConvertView", String.valueOf(position));
    146 
    147             if (convertView == null) {
    148                 LayoutInflater inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    149                 convertView = inflater.inflate(R.layout.item_row, null);
    150 
    151                 viewHolder = new ViewHolder();
    152                 viewHolder.name = (TextView) convertView.findViewById(R.id.itemName);
    153                 viewHolder.quantity = (TextView) convertView.findViewById(R.id.itemQuantity);
    154                 viewHolder.owner = (TextView) convertView.findViewById(R.id.itemOwner);
    155                 viewHolder.complete = (Switch) convertView.findViewById(R.id.itemComplete);
    156                 convertView.setTag(viewHolder);
    157 
    158                 viewHolder.name.setOnClickListener(new View.OnClickListener() {
    159                     @Override
    160                     public void onClick(View v) {
    161                         TextView tv = (TextView) v;
    162                         Log.d("User Input", "Clicked: " + tv.getText());
    163                     }
    164                 });
    165 
    166                 viewHolder.quantity.setOnClickListener(new View.OnClickListener() {
    167                     @Override
    168                     public void onClick(View v) {
    169                         TextView tv = (TextView) v;
    170                         Log.d("User Input", "Clicked: " + tv.getText());
    171                     }
    172                 });
    173 
    174                 viewHolder.owner.setOnClickListener(new View.OnClickListener() {
    175                     @Override
    176                     public void onClick(View v) {
    177                         TextView tv = (TextView) v;
    178                         Log.d("User Input", "Clicked: " + tv.getText());
    179                     }
    180                 });
    181 
    182                 viewHolder.complete.setOnClickListener(new View.OnClickListener() {
    183                     @Override
    184                     public void onClick(View v) {
    185                         Log.d("User Input", "Clicked: " + nlist.get(position) + "'s Checkbox");
    186                     }
    187                 });
    188             }
    189             else {
    190                 viewHolder = (ViewHolder) convertView.getTag();
    191             }
    192 
    193             String name = nlist.get(position);
    194             String quantity = qlist.get(position);
    195             String owner = olist.get(position);
    196             viewHolder.name.setText(name);
    197             viewHolder.quantity.setText("(x" + quantity +")");
    198             viewHolder.owner.setText(owner);
    199 
    200             return convertView;
    201 
    202         }
    203 
    204     }
    205 
    206 
    207 }