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;
}
}
|