package com.conference.app.lib.ui; import android.app.Activity; import android.content.Intent; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.ListView; import android.widget.TextView; import com.conference.app.lib.R; import com.conference.app.lib.database.DatabaseHelper; import com.conference.app.lib.database.tables.SessionTable; import com.conference.app.lib.ui.adapter.FavoritesListAdapter; public class Favorites extends Activity { private static final String TAG = Favorites.class.getName(); private static final boolean DEBUG = false; private ListView favoriteList; private TextView noFavoritesText; private SQLiteDatabase db; private Cursor cursor; private boolean isFirstInit = true; @Override protected void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.favorites); final DatabaseHelper helper = new DatabaseHelper(this); db = helper.getReadableDatabase(); initViews(); } @Override protected void onDestroy() { super.onDestroy(); if (cursor != null && !cursor.isClosed()) { cursor.close(); } if (db != null && db.isOpen()) { db.close(); } isFirstInit = true; } @Override protected void onResume() { super.onResume(); if (!isFirstInit) { return; } isFirstInit = false; initViewValues(); //Eddie Li Keep current position after back from background } private void initViewValues() { if (cursor == null || cursor.isClosed()) { cursor = db.query(SessionTable.TABLE_NAME, new String[] { SessionTable.ID, SessionTable.TYPE, SessionTable.NAME, SessionTable.SHORT_NAME, SessionTable.UNIQUE_ID, SessionTable.FAVORITE, SessionTable.END_DATE, SessionTable.ROOM_NAME, SessionTable.START_DATE }, SessionTable.FAVORITE + "=1", null, null, null, SessionTable.START_DATE + ", " + SessionTable.NAME + " COLLATE NOCASE"); startManagingCursor(cursor); } else { cursor.requery(); } if (cursor.getCount() == 0) { showNoFavoritesText(); } else { noFavoritesText.setVisibility(View.GONE); favoriteList.setVisibility(View.VISIBLE); final FavoritesListAdapter adapter = new FavoritesListAdapter(Favorites.this, cursor, db); favoriteList.setAdapter(adapter); favoriteList.invalidate(); adapter.notifyDataSetChanged(); favoriteList.setItemsCanFocus(true); favoriteList.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(final AdapterView<?> parent, final View view, final int position, final long id) { final Cursor cursor = (Cursor) parent.getItemAtPosition(position); final String uniqueSessionId = cursor.getString(cursor.getColumnIndex(SessionTable.UNIQUE_ID)); final Intent intent = new Intent(Favorites.this, SessionDetails.class); intent.putExtra(SessionDetails.EXTRA_SESSION_ID, uniqueSessionId); startActivity(intent); } }); } } public void showNoFavoritesText() { if (noFavoritesText != null && favoriteList != null) { noFavoritesText.setVisibility(View.VISIBLE); favoriteList.setVisibility(View.GONE); } } private void initViews() { noFavoritesText = (TextView) findViewById(R.id.favoriteNoText); favoriteList = (ListView) findViewById(R.id.favoritelistview); } public void onClickActionBarHome(final View view) { final Intent intent = new Intent(this, Dashboard.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent); // overridePendingTransition(R.anim.home_enter, R.anim.home_exit); } }