package cat.foixench.apps.lectorss;
import android.app.ListActivity;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ListView;
import cat.foixench.apps.lectorss.db.RssContract;
import cat.foixench.apps.lectorss.db.RssContract.FeedsTable;
import cat.foixench.apps.lectorss.utils.LectoRSSInterface;
import cat.foixench.apps.lectorss.widget.FeedsAdapter;
public class ArticleListActivity extends ListActivity implements LectoRSSInterface {
private FeedsAdapter adapter;
Cursor cursor;
/**
* Crea la activity, cargando el layout asociado articlelist.xml
* @see android.app.Activity#onCreate(android.os.Bundle)
*/
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// indicamos el layout articlelist que usa esta activity
setContentView(R.layout.articlelist);
// // generamos un adapter desde codigo
// SimpleAdapter adapter = this.getAdapter ();
// definimos un adapter para la lista,de modo que se acceda a una bbdd
adapter = new FeedsAdapter (this);
// asociamos el adapter a la list view.
setListAdapter(adapter);
}
/**
* en este metodo inicializamos abrimos el cursor a la base de datos.
* @see android.app.Activity#onStart()
*/
@Override
protected void onStart() {
super.onStart();
adapter.swapCursor(this.getFeeds());
}
/**
* en este m�todo liveramos el cursor, para que cuando la app pase a segundo plano, no consuma recursos extras.
* @see android.app.Activity#onStop()
*/
@Override
protected void onStop() {
super.onStop();
adapter.swapCursor(null);
}
/**
* gestiona el evento click en un elemento de la lista. en este caso
* muestra llama la activity ArticleDetailActivity
* @see android.app.ListActivity#onListItemClick(android.widget.ListView, android.view.View, int, long)
*/
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
// creamos un intent para abrir la activity deseada
Intent intent = new Intent (this, ArticleDetailActivity.class);
Log.d ("ArticleListActivity", "id = " + id);
// intent.putExtra (PARAM_TITLE, ((TextView) v.findViewById(R.id.title)).getText ());
// intent.putExtra (PARAM_AUTHOR, ((TextView) v.findViewById (R.id.author)).getText ());
// intent.putExtra (PARAM_DATE, ((TextView) v.findViewById (R.id.date)).getText ());
intent.putExtra (PARAM_ID, "" + id);
startActivity (intent);
}
/**
* genera el men� de
* @see android.app.Activity#onCreateOptionsMenu(android.view.Menu)
*/
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.articlelist, menu);
return true;
}
/**
* Gestiona las selecciones en los elementos de menu.
* @see android.app.Activity#onOptionsItemSelected(android.view.MenuItem)
* @param item nos devuelve el elemento de men� menu seleccionado
*/
@Override
public boolean onOptionsItemSelected(MenuItem item) {
boolean result = false;
switch (item.getItemId ()) {
case R.id.menu_about :
// mostramos la activity AboutActivity
Intent intent = new Intent (this, AboutActivity.class);
startActivity (intent);
result = true;
break;
default :
result = false;
}
return result;
}
// private Cursor getFeeds () {
//
// // recuperamos la base de datos mediante el helper de la bbdd.
// RssDbHelper helper = new RssDbHelper(this);
// SQLiteDatabase db = helper.getReadableDatabase();
//
// // parametros de la table
// String table = FeedsTable.TABLE_NAME;
// String [] columns = new String [] {FeedsTable._ID, FeedsTable.COLUMN_TITLE, FeedsTable.COLUMN_AUTHOR, FeedsTable.COLUMN_PUB_DATE};
// String selection = null;
// String [] selectionArgs = null;
// String groupBy = null;
// String having = null;
// String orderBy = FeedsTable.COLUMN_PUB_DATE + " DESC";
//
// return db.query(table, columns, selection, selectionArgs, groupBy, having, orderBy);
// }
private Cursor getFeeds () {
//LectoRSSContentProvider lectorssData = new LectoRSSContentProvider();
Uri uri = RssContract.FeedsTable.getUri();
String projection [] = new String [] {FeedsTable._ID, FeedsTable.COLUMN_TITLE, FeedsTable.COLUMN_AUTHOR, FeedsTable.COLUMN_PUB_DATE};
String sortOrder = FeedsTable.COLUMN_PUB_DATE + " DESC";
cursor = getContentResolver().query (uri, projection, null, null, sortOrder);
return cursor;
}
}