DebtsToMeList.java :  » UnTagged » x-debt » org » pbelov » xDebt » Android Open Source

Android Open Source » UnTagged » x debt 
x debt » org » pbelov » xDebt » DebtsToMeList.java

package org.pbelov.xDebt;

import android.app.AlertDialog;
import android.app.ListActivity;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
import android.widget.Toast;

import java.util.ArrayList;
import java.util.Date;

import org.pbelov.xDebt.R;

public class DebtsToMeList extends ListActivity {

    private MyCustomAdapter mAdapter;
    AlertDialog.Builder dialogBuilder;
    DBAdapterDebtsToMe db;
    
    // TODO: remove it. Find another way to pass the data to edit view
    public static String name = null;
    public static String what = null;
    public static String comment = null;
    public static String date = null;
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mAdapter = new MyCustomAdapter();
        db = new DBAdapterDebtsToMe(this);
        dialogBuilder = new AlertDialog.Builder(this);
        
      setListAdapter(mAdapter);

      mAdapter.notifyDataSetChanged();
      
      db.open();
    }
    
    public void onResume() {
      super.onResume();
      Debt debts[] = db.getAllDebts();
      
      int length = debts.length;
      Log.v("ALL", "lenght = " + length);
      mAdapter.mData.clear();
      mAdapter.mData2.clear();
      mAdapter.mData3.clear();
      mAdapter.mData4.clear();
      
       for (int i = 0; i < length; i++) {
         mAdapter.addItem(debts[i].Name, 
                  debts[i].What, 
                  debts[i].Comment,
                  debts[i].Date
         );
       }

       mAdapter.notifyDataSetChanged();
    }

    
  public boolean onCreateOptionsMenu(Menu menu) {
    super.onCreateOptionsMenu(menu);
         
      MenuInflater inflater = getMenuInflater();
      inflater.inflate(R.menu.menu, menu);
      
    return true;
  }
  
  /*
  //TODO: use for adding new database items after adding instead of resume()
  protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    String toast_message =  "Returned from:" + Integer.toString(requestCode) + ":" + Integer.toString(resultCode);
    Toast.makeText(getApplicationContext(),
    toast_message,
    Toast.LENGTH_LONG).show();
    
    
  }
   */
  
  private void editDebt(int index) {
    name = mAdapter.mData.get(index);
    what = mAdapter.mData2.get(index);
    comment = mAdapter.mData3.get(index);
    date = mAdapter.mData4.get(index);
    
    Intent intent = new Intent(this, addnewDebtToMe.class);
    startActivityForResult(intent, 1);
  }
  
   public boolean onOptionsItemSelected(MenuItem item) {
     switch (item.getItemId()) {
       case R.id.add_new:
         startActivityForResult(new Intent(this, addnewDebtToMe.class), 1);
         break;
       case R.id.item_exit:
          finish();
          break;
       case R.id.item_clean_db:
         db.Clean();
         finish();
     }
     
     return true;
   }

    private class MyCustomAdapter extends BaseAdapter {

        private static final int TYPE_ITEM = 0;
        private static final int TYPE_SEPARATOR = 1;
        private static final int TYPE_MAX_COUNT = TYPE_SEPARATOR + 1;

        private ArrayList<String> mData = new ArrayList<String>();
        private ArrayList<String> mData2 = new ArrayList<String>();
        private ArrayList<String> mData3 = new ArrayList<String>();
        private ArrayList<String> mData4 = new ArrayList<String>();
        
        private LayoutInflater mInflater;

        public MyCustomAdapter() {
            mInflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        }

        public void addItem(final String item, final String item2, final String item3, final String item4) {
          mData.add(item);
          mData2.add(item2);
          mData3.add(item3);
          mData4.add(item4);
            
            notifyDataSetChanged();
        }
        
        public void removeItem(int index) {
          mData.remove(index);
          mData2.remove(index);
          mData3.remove(index);
          mData4.remove(index);
          notifyDataSetChanged();
        }

        @Override
        public int getItemViewType(int position) {
            return TYPE_ITEM;
        }

        @Override
        public int getViewTypeCount() {
            return TYPE_MAX_COUNT;
        }

       // @Override
        public int getCount() {
            return mData.size();
        }

      //  @Override
        public String getItem(int position) {
            return mData.get(position);
        }

       // @Override
        public long getItemId(int position) {
            return position;
        }
        
        ViewHolder holder = null;
        
       // @Override
        public View getView(final int position, View convertView, ViewGroup parent) {

                        int type = getItemViewType(position);
            System.out.println("getView " + position + " " + convertView + " type = " + type);
            if (convertView == null) {
                holder = new ViewHolder();
                switch (type) {
                    case TYPE_ITEM:
                        convertView = mInflater.inflate(R.layout.item1, null);
                        holder.textView = (TextView)convertView.findViewById(R.id.text);
                        holder.textView2 = (TextView)convertView.findViewById(R.id.text2);
                        holder.textView3 = (TextView)convertView.findViewById(R.id.text3);
                        break;
                    case TYPE_SEPARATOR:
                        convertView = mInflater.inflate(R.layout.item2, null);
                        holder.textView = (TextView)convertView.findViewById(R.id.textSeparator);
                        break;
                }
                convertView.setTag(holder);
            } else {
                holder = (ViewHolder)convertView.getTag();
            }
            
            holder.textView.setOnLongClickListener(new View.OnLongClickListener() {
              
            //  @Override
              public boolean onLongClick(View v) {
                String[] str = new String[2];
                
                str[0] = getString(R.string.IDS_EDIT);
                str[1] = getString(R.string.IDS_DELETE);
//                str[2] = getString(R.string.IDS_POST);
                
                dialogBuilder.setItems(str, new OnClickListener() {

            public void onClick(DialogInterface dialog, int which) {
              switch (which) {
              case 0:
                editDebt(position);
                break;
              case 1:
                      db.delete(mAdapter.mData.get(position), mAdapter.mData2.get(position), mAdapter.mData3.get(position), mAdapter.mData4.get(position));
                      mAdapter.removeItem(position);
                break;
              }
              
            }
                  
                });
                
                dialogBuilder.create().show();
                
                return true;
              }

            });
              
            holder.textView.setOnClickListener(new View.OnClickListener() {
              public void onClick(View v) {
                String message = mData3.get(position);
                message = message.replace("\n", "");
                message = message.replace("\t", "");
                
                if (message != null && message.length() > 0) {
                  Toast.makeText(getApplicationContext(), message, Toast.LENGTH_LONG).show();
                }
                 }
            });
            
            holder.textView.setText(mData.get(position));
            holder.textView2.setText(mData2.get(position));
            holder.textView3.setText(mData4.get(position));
            
            return convertView;
        }

    }

    public static class ViewHolder {
      public TextView textView;
      public TextView textView2;
      public TextView textView3;
    }
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.