Tecnologia do Blogger.
RSS

[androidbrasil-dev] Re: Adicionar Id numa lista com CursorAdapter

É a mesma coisa...
Vc so consegue linkar uma consulta ao BD com um adapter, seja pra
spinner ou listview, se o cursor tiver um campo chamado _ID.
Como vc disse que já está mostrando na tela, vc já tem este ID
único... só usá-lo. Seu código deve ficar algo parecido com o abaixo:

@Override
protected void onListItemClick(final ListView l, final View v, final
int position, final long id)
{
final Cursor c = this.adapter.getCursor();
if(!this.c.moveToPosition(position))
return;
int itemId =
c.getLong(c.getColumnIndex(BaseColumns._ID));
Log.d("MeuLog", "Meu ID: " + itemId);
final Intent i = new Intent(this, MinhaActivity.class);
i.putExtra("MEU_ID", itemId);
this.startActivity(i);
}

Só cuidado com essa utilização do BD. O mais correto eh utilizar
CursorLoader, dá uma procurada.

[]'s
JPMagalhaes.

On Feb 4, 6:25 pm, Cleison Moreira Pereira <cleison...@gmail.com>
wrote:
> Olha não sei se vai funcionar ai neste caso, mas com spinners é só ter o
> campo id da tabela como _ID que ele faz a relação sozinho.
>
> Att
> Cleison Moreira Pereira
>
> Em 3 de fevereiro de 2012 18:54, Janes Roberto da Costa <kadosh...@gmail.com
>
>
>
>
>
>
>
> > escreveu:
> > Opa @Gilmar,
>
> > Não faço idéia de como fazer isso.
> > =/
>
> > On 3 fev, 17:46, Gilmar Soares <linux.soa...@gmail.com> wrote:
> > > Amigo,
>
> > > Acredito que a melhor forma é você pegar esse id tratar esse dado em um
> > > método com uma query que retorne seu select com o dado que procura :-)
> > > Vou fazer dessa forma o meu, abraços
> > > Em 03/02/2012 18:41, "Janes Roberto da Costa" <kadosh...@gmail.com>
> > > escreveu:
>
> > > > Olá pessoal,
>
> > > > Estou iniciando meus estudos com o Android e gostaria de uma ajuda.
> > > > Fiz um Adapter extendendo um CursorAdapter para preencher uma lista
> > > > personalizada.
> > > > Agora gostaria de saber como faço para relacionar cada item da lista à
> > id
> > > > do registro da base de dados.
> > > > A idéia é recuperar a id do item pressionado para exibir uma Activity
> > com
> > > > mais informações.
> > > > O código do Adapter é este:
>
> > > > package br.com.jdroid.feriados.Adapter;
>
> > > > import br.com.jdroid.feriados.R;
>
> > > > import android.content.Context;
> > > > import android.database.Cursor;
> > > > import android.view.LayoutInflater;
> > > > import android.view.View;
> > > > import android.view.ViewGroup;
> > > > import android.widget.CursorAdapter;
> > > > import android.widget.ImageView;
> > > > import android.widget.TextView;
>
> > > > public class AnniversariesAdapter extends CursorAdapter{
>
> > > >     private LayoutInflater mInflater;
> > > >     private int mRowIdIndex;
> > > >     private int mTitleIndex;
> > > >     private int mDayIndex;
> > > >     private int mMounthIndex;
> > > >     private int mCategoryIndex;
>
> > > >     public AnniversariesAdapter(Context context, Cursor c) {
> > > >         super(context, c);
> > > >         mRowIdIndex = c.getColumnIndex(FeriadosDbAdapter.KEY_ROWID);
> > > >         mTitleIndex = c.getColumnIndex(FeriadosDbAdapter.KEY_TITLE);
> > > >         mDayIndex = c.getColumnIndex(FeriadosDbAdapter.KEY_DAY);
> > > >         mMounthIndex = c.getColumnIndex(FeriadosDbAdapter.KEY_MONTH);
> > > >         mCategoryIndex =
> > c.getColumnIndex(FeriadosDbAdapter.KEY_CATEGORY);
>
> > > >         mInflater = LayoutInflater.from(context);
> > > >     }
>
> > > >     @Override
> > > >     public void bindView(View view, Context context, Cursor c) {
> > > >         //ListView v = (ListView) view.findViewById(R.id.);
> > > >         ImageView image = (ImageView)
> > > > view.findViewById(R.id.calendar_icon);
> > > >         TextView title = (TextView) view.findViewById(R.id.title);
> > > >         TextView abbrev = (TextView) view.findViewById(R.id.abbrev);
>
> > > >         int cat = c.getInt(mCategoryIndex);
> > > >         if (cat == 1) image.setImageResource(R.drawable.ic_calendar);
> > > >         if (cat == 2) image.setImageResource(R.drawable.ic_calendar_2);
>
> > > >         title.setText(c.getString(mTitleIndex));
> > > >         abbrev.setText(c.getString(mDayIndex) + "/" +
> > > > c.getString(mMounthIndex));
>
> > > >     }
>
> > > >     @Override
> > > >     public View newView(Context context, Cursor cursor, ViewGroup
> > parent)
> > > > {
> > > >         return mInflater.inflate(R.layout.dates_row, null);
> > > >     }
> > > > }
>
> > > > E o Activity principal da aplicação é este:
>
> > > > package br.com.jdroid.feriados;
> > > > import  br.com.jdroid.feriados.R;
>
> > > > import br.com.jdroid.feriados.Adapter.AnniversariesAdapter;
> > > > import br.com.jdroid.feriados.Adapter.FeriadosDbAdapter;
>
> > > > import android.app.ListActivity;
> > > > import android.database.Cursor;
> > > > import android.os.Bundle;
>
> > > > public class ListAnniversariesActivity extends ListActivity {
>
> > > >     private FeriadosDbAdapter mDbHelper;
>
> > > >     @Override
> > > >     public void onCreate(Bundle savedInstanceState) {
> > > >         super.onCreate(savedInstanceState);
> > > >         setContentView(R.layout.list_dates);
> > > >         mDbHelper = new FeriadosDbAdapter(this);
> > > >         mDbHelper.open();
>
> > > >         fillData();
>
> > > >     }
>
> > > >     private void fillData() {
> > > >         Cursor datesCursor = mDbHelper.fetchAll();
> > > >         startManagingCursor(datesCursor);
> > > >         AnniversariesAdapter adapter = new AnniversariesAdapter(this,
> > > > datesCursor);
> > > >         setListAdapter(adapter);
> > > >     }
> > > > }

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

0 comentários:

Postar um comentário