package org.djd.busntrain.bus; import org.djd.busntrain.R; import org.djd.busntrain.provider.BusFavoriteContentProvider; import android.app.AlertDialog; import android.app.ListActivity; import android.content.ContentResolver; import android.content.DialogInterface; import android.content.Intent; import android.database.Cursor; import android.net.Uri; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemLongClickListener; import android.widget.ListAdapter; import android.widget.ListView; import android.widget.SimpleCursorAdapter; import android.widget.Toast; public class BusFavoriteActivity extends ListActivity implements OnItemLongClickListener { private static final String TAG = BusFavoriteActivity.class.getSimpleName(); private static final int[] VIEW_FAVORITE_ID_ARRAY = new int[]{R.id.favorite_route, R.id.favorite_stop_id, R.id.favorite_route_name, R.id.favorite_direction, R.id.favorite_stop_name}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.common_list_view); getListView().setOnItemLongClickListener(this); displayListItems(); } /** * @return true so that onLIstItemClick handler won't be called. */ @Override public boolean onItemLongClick(AdapterView<?> adapterView, View view, int position, long id) { Cursor cursor = (Cursor) adapterView.getItemAtPosition(position); final BusFavoriteEntity busFavoriteEntity = BusFavoriteEntity.Helper.createBusFavoriteEntity(cursor, position); new AlertDialog.Builder(this).setTitle(R.string.msg_delete_dialog_title).setMessage(busFavoriteEntity.stopName) .setPositiveButton(R.string.btn_delete, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { ContentResolver contentResolver = getContentResolver(); // Uri uri = Uri.withAppendedPath(BusFavoriteContentProvider.CONTENT_URI, String.valueOf(busFavoriteEntity.id)); int deleteCount = contentResolver.delete(uri, null, null); if (1 == deleteCount) { Toast.makeText(getBaseContext(), "Item deleted.", Toast.LENGTH_SHORT).show(); displayListItems(); } } }).setNegativeButton(R.string.btn_cancel, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // do nothing. } }).show(); return true; } // private CharSequence getMessage() { // // return "TODO: compose bus stop info."; // } @Override protected void onListItemClick(ListView listView, View v, int position, long id) { super.onListItemClick(listView, v, position, id); Intent intent = new Intent(this, BusPredictionActivity.class); Cursor cursor = (Cursor) listView.getItemAtPosition(position); BusFavoriteEntity busFavoriteEntity = BusFavoriteEntity.Helper.createBusFavoriteEntity(cursor, position); intent.putExtra(BusFavoriteEntity.BUS_FAVORITE_ENTITY_EXTRA_DATA_KEY, busFavoriteEntity); startActivity(intent); Log.i(TAG, "favorite item selected. " + busFavoriteEntity); } private void displayListItems() { Cursor cursor = managedQuery(BusFavoriteContentProvider.CONTENT_URI, BusFavoriteEntity.Columns.FULL_PROJECTION, null, null, BusFavoriteEntity.Columns._ID); ListAdapter listAdapter = new SimpleCursorAdapter(this, R.layout.favorite_list_item_view, cursor, BusFavoriteEntity.Columns.LIST_VIEW_PROJECTION, VIEW_FAVORITE_ID_ARRAY); setListAdapter(listAdapter); } }