hi:
   I‘m reslove this problem, the code is right always, but the log cheat me.

2010/7/14 Jeruliu <[email protected]>

> Well, that will be similar with handling the checkbox in the item.
>
> I handled it in my customized adapter with a dirty approach.
>
> On Jul 12, 4:55 pm, 苗忠良 <[email protected]> wrote:
> > hi,Jeruliu:
> >     I need not that how to handle the item,  in my code, I wrote it , I
> want
> > to know is that how to handle the button in the item.
> >
> >     but still thank you!
> >
> > 2010/7/12 Jeruliu <[email protected]>
> >
> > > Please find my working code snippet below:
> >
> > > // get a reference to the ListView
> > > listView = (ListView) findViewById(android.R.id.list);
> > > ...
> > > // single click event
> > > listView.setOnItemClickListener(new OnItemClickListener() {
> > >         public void onItemClick(AdapterView<?> arg0, View arg1, int
> arg2,
> > > long arg3) {
> >
> > > My list view works with the customized adapter.
> >
> > > On Jul 11, 9:18 pm, 苗忠良 <[email protected]> wrote:
> > > > hi,all:
> >
> > > >   I write a listactivty,the item including a textview and a
> button,the
> > > data
> > > > came from a sqlite。but in handling the clickevent , i meet some
> problem,
> > > in
> > > > the CursorAdapter's bindView() function,i cann't get the current
> > > position。in
> > > > log,i find position of Cursor is the position I last click the item
> of
> > > > listview.
> > > >   the code as follows:
> > > > package miaozl.hello;
> >
> > > > import android.app.ListActivity;
> > > > import android.content.Context;
> > > > import android.database.Cursor;
> > > > import android.os.Bundle;
> > > > import android.util.Log;
> > > > import android.view.LayoutInflater;
> > > > import android.view.View;
> > > > import android.view.ViewGroup;
> > > > import android.view.View.OnClickListener;
> > > > import android.widget.AdapterView;
> > > > import android.widget.Button;
> > > > import android.widget.CursorAdapter;
> > > > import android.widget.ImageButton;
> > > > import android.widget.ListView;
> > > > import android.widget.SimpleCursorAdapter;
> > > > import android.widget.TextView;
> >
> > > > public class helloActivity extends ListActivity{
> > > >     private helloAdapter mDbHelper;
> > > >     private final static String TAG ="helloActivity";
> > > >     private static LayoutInflater mFactory;
> > > >     ListView lv;
> > > >     /** Called when the activity is first created. */
> > > >     @Override
> > > >     public void onCreate(Bundle savedInstanceState) {
> > > >         super.onCreate(savedInstanceState);
> > > >         mDbHelper = new helloAdapter(this);
> > > >         mDbHelper.open();
> > > >         mFactory = LayoutInflater.from(this);
> > > >         lv= getListView();
> > > >         lv.setChoiceMode(1);
> > > >         lv.setOnItemClickListener(new
> AdapterView.OnItemClickListener(){
> >
> > > >             @Override
> > > >             public void onItemClick(AdapterView<?> arg0, View arg1,
> int
> > > > arg2,
> > > >                     long arg3) {
> > > >                 // TODO Auto-generated method stub
> > > >                 Log.d(TAG,"====onItemClick===arg3 is ==="+arg3);
> > > >             }
> >
> > > >         });
> > > >         fillData();
> > > >  }
> > > >     private void fillData() {
> > > >         // TODO Auto-generated method stub
> > > >         Cursor c = mDbHelper.fetchAllNotes();
> > > >         startManagingCursor(c);
> >
> > > >         String[] from = new String[] {
> > > > helloAdapter.KEY_WORD,helloAdapter.KEY_ID};
> > > >         int[] to = new int[] { R.id.word,R.id.button};
> > > >         lv.setAdapter(new ListAdapter(this, c));
> > > >     }
> > > >     private static class ListAdapter extends CursorAdapter {
> >
> > > >         public ListAdapter(Context context, Cursor c) {
> > > >             super(context, c);
> > > >             // TODO Auto-generated constructor stub
> > > >         }
> >
> > > >         @Override
> > > >         public void bindView(View view, Context context, final Cursor
> > > > cursor) {
> > > >             // TODO Auto-generated method stub
> > > >             Button onButton=(Button)view.findViewById(R.id.button);
> > > >             onButton.setOnClickListener(new OnClickListener(){
> >
> > > >                 @Override
> > > >                 public void onClick(View arg0) {
> > > >                     // TODO Auto-generated method stub
> > > >                     Log.d(TAG,
> > > > "=cursor.getPosition()="+cursor.getPosition());
> > > >                 }
> > > >             });
> >
> > > >         }
> >
> > > >         @Override
> > > >         public View newView(Context context, Cursor cursor, ViewGroup
> > > > parent) {
> > > >             // TODO Auto-generated method stub
> > > >             View ret=
> mFactory.inflate(R.layout.list_item,parent,false);
> > > >             TextView word=(TextView)ret.findViewById(R.id.word);
> > > >             Button onButton=(Button)ret.findViewById(R.id.button);
> > > >             onButton.setFocusable(false);
> >
> > >
> word.setText(cursor.getString(cursor.getColumnIndex(helloAdapter.KEY_WORD)));
> > > >             onButton.setBackgroundResource(R.drawable.icon);
> > > >             return ret;
> > > >         }
> >
> > > >     }
> >
> > > > }
> >
> > > >  the ListAdapter as fallows:
> >
> > > > package miaozl.hello;
> >
> > > > import android.content.ContentValues;
> > > > import android.content.Context;
> > > > import android.database.Cursor;
> > > > import android.database.SQLException;
> > > > import android.database.sqlite.SQLiteDatabase;
> > > > import android.database.sqlite.SQLiteOpenHelper;
> > > > import android.util.Log;
> >
> > > > public class helloAdapter{
> > > >     public static final String KEY_WORD = "word";
> > > >     public static final String KEY_ID = "_id";
> > > >     private static final String TAG = "helloAdapter";
> > > >     private DatabaseHelper mDbHelper;
> > > >     private SQLiteDatabase mDb;
> >
> > > >     private static final String DATABASE_CREATE =
> > > >         "create table notes (_id integer primary key autoincrement, "
> > > >         + "word text not null);";
> > > >     private static final String DATABASE_NAME = "list";
> > > >     private static final String DATABASE_TABLE = "notes";
> > > >     private static final int DATABASE_VERSION = 1;
> > > >     private final Context mCtx;
> > > >     private static class DatabaseHelper extends SQLiteOpenHelper {
> >
> > > >         DatabaseHelper(Context context) {
> > > >             super(context, DATABASE_NAME, null, DATABASE_VERSION);
> > > >         }
> >
> > > >         @Override
> > > >         public void onCreate(SQLiteDatabase db) {
> >
> > > >             db.execSQL(DATABASE_CREATE);
> > > >         }
> >
> > > >         @Override
> > > >         public void onUpgrade(SQLiteDatabase db, int oldVersion, int
> > > > newVersion) {
> > > >             Log.w(TAG, "Upgrading database from version " +
> oldVersion +
> > > "
> > > > to "
> > > >                     + newVersion + ", which will destroy all old
> data");
> > > >             db.execSQL("DROP TABLE IF EXISTS notes");
> > > >             onCreate(db);
> > > >         }
> > > >     }
> >
> > > >     /**
> > > >      * Constructor - takes the context to allow the database to be
> > > >      * opened/created
> > > >      *
> > > >      * @param ctx the Context within which to work
> > > >      */
> > > >     public helloAdapter(Context ctx) {
> > > >         this.mCtx = ctx;
> > > >     }
> >
> > > >     /**
> > > >      * Open the notes database. If it cannot be opened, try to create
> a
> > > new
> > > >      * instance of the database. If it cannot be created, throw an
> > > exception
> > > > to
> > > >      * signal the failure
> > > >      *
> > > >      * @return this (self reference, allowing this to be chained in
> an
> > > >      *         initialization call)
> > > >      * @throws SQLException if the database could be neither opened
> or
> > > > created
> > > >      */
> > > >     public helloAdapter open() throws SQLException {
> > > >         mDbHelper = new DatabaseHelper(mCtx);
> > > >         mDb = mDbHelper.getWritableDatabase();
> > > >         return this;
> > > >     }
> >
> > > >     public void close() {
> > > >         mDbHelper.close();
> > > >     }
> >
> > > >     /**
> > > >      * Create a new note using the title and body provided. If the
> note
> > > is
> > > >      * successfully created return the new rowId for that note,
> otherwise
> > > > return
> > > >      * a -1 to indicate failure.
> > > >      *
> > > >      * @param title the title of the note
> > > >      * @param body the body of the note
> > > >      * @return rowId or -1 if failed
> > > >      */
> > > >     public long createNote(String word) {
> > > >         ContentValues initialValues = new ContentValues();
> > > >         initialValues.put(KEY_WORD, word);
> >
> > > >         return mDb.insert(DATABASE_TABLE, null, initialValues);
> > > >     }
> >
> > > >     /**
> > > >      * Delete the note with the given rowId
> > > >      *
> > > >      * @param rowId id of note to delete
> > > >      * @return true if deleted, false otherwise
> > > >      */
> > > >     public boolean deleteNote(long rowId) {
> >
> > > >         return mDb.delete(DATABASE_TABLE, KEY_ID + "=" + rowId, null)
> >
> > > 0;
> > > >     }
> >
> > > >     /**
> > > >      * Return a Cursor over the list of all notes in the database
> > > >      *
> > > >      * @return Cursor over all notes
> > > >      */
> > > >     public Cursor fetchAllNotes() {
> >
> > > >         return mDb.query(DATABASE_TABLE, new String[] {KEY_ID,
> KEY_WORD
> > > >                 }, null, null, null, null, null);
> > > >     }
> >
> > > >     /**
> > > >      * Return a Cursor positioned at the note that matches the given
> > > rowId
> > > >      *
> > > >      * @param rowId id of note to retrieve
> > > >      * @return Cursor positioned to matching note, if found
> > > >      * @throws SQLException if note could not be found/retrieved
> > > >      */
> > > >     public Cursor fetchNote(long rowId) throws SQLException {
> >
> > > >         Cursor mCursor =
> >
> > > >             mDb.query(true, DATABASE_TABLE, new String[] {KEY_ID,
> > > >                     KEY_WORD}, KEY_ID + "=" + rowId, null,
> > > >                     null, null, null, null);
> > > >         if (mCursor != null) {
> > > >             mCursor.moveToFirst();
> > > >         }
> > > >         return mCursor;
> >
> > > >     }
> >
> > > >     /**
> > > >      * Update the note using the details provided. The note to be
> updated
> > > is
> > > >      * specified using the rowId, and it is altered to use the title
> and
> > > > body
> > > >      * values passed in
> > > >      *
> > > >      * @param rowId id of note to update
> > > >      * @param title value to set note title to
> > > >      * @param body value to set note body to
> > > >      * @return true if the note was successfully updated, false
> otherwise
> > > >      */
> > > >     public boolean updateNote(long rowId,String word) {
> > > >         ContentValues args = new ContentValues();
> > > >         args.put(KEY_WORD, word);
> >
> > > >         return mDb.update(DATABASE_TABLE, args, KEY_ID + "=" + rowId,
> > > null)
> >
> > > > > 0;
> > > >     }
> >
> > ...
> >
> > read more >>
>
> --
> You received this message because you are subscribed to the Google
> Groups "Android Developers" group.
> To post to this group, send email to [email protected]
> To unsubscribe from this group, send email to
> [email protected]<android-developers%[email protected]>
> For more options, visit this group at
> http://groups.google.com/group/android-developers?hl=en
>



-- 
/*******************************************/
苗忠良(Miao Zhong-liang)
MSN:[email protected] <msn%[email protected]>
BLOG:http://miaozl.spaces.live.com
/*******************************************/

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to