sorry i forgot to mention that even i set the position to checkbox tag, the
log always output the position of the last element in the onCheckedChanged

On Thu, Apr 29, 2010 at 6:36 AM, Jeru Liu <jeru....@gmail.com> wrote:

> Thanks buddy, but it still doesn't work in my case, now i will attach more
> informatin below.
>
> My Adapter class
>
>
> public class ProfileAdapter extends SimpleAdapter {
>     Activity mContext;
>     CheckBox cb;
>     ProfileDAO mProfileDao;
>     int mId;
>     int mPosition;
>
>     public ProfileAdapter(Activity context, List<Map<String, String>>
> rowList, int resourceId, String[] from, int[] to) {
>         super(context, rowList, resourceId, from, to);
>         mContext = context;
>         mProfileDao = new ProfileDAO(context);
>
>     }
>
>     @Override
>     public View getView(int position, View convertView, ViewGroup parent) {
>
>         View row =
> this.mContext.getLayoutInflater().inflate(R.layout.list_profile, null);
>
>         row.setTag(R.id.profile_title,
> row.findViewById(R.id.profile_title));
>         row.setTag(R.id.profile_value,
> row.findViewById(R.id.profile_value));
>         row.setTag(R.id.cb_switch, row.findViewById(R.id.cb_switch));
>         row.setTag(R.id.id, row.findViewById(R.id.id));
>
>         TextView profileTitle = (TextView) row.getTag(R.id.profile_title);
>         TextView profileValue = (TextView) row.getTag(R.id.profile_value);
>         cb = (CheckBox) row.getTag(R.id.cb_switch);
>         TextView id = (TextView) row.getTag(R.id.id);
>
>         Map<String, String> temp = (Map<String, String>) ((AdapterView<?>)
> parent).getItemAtPosition(position);
>
>         cb.setChecked(isEnable(temp.get("enable")));
>         profileTitle.setText(temp.get("title"));
>         //cb.setFocusable(true);
>
>         profileValue.setText(temp.get("value"));
>
> //        String sid = (String)temp.get("id");
> //        id.setText(sid);
>         cb.setTag(position);
>
>         cb.setOnCheckedChangeListener(new OnCheckedChangeListener() {
>             public void onCheckedChanged(CompoundButton buttonView, boolean
> isChecked) {
>
>                 Log.v("abc", "********** position is: " + cb.getTag());
> //                mProfileDao.updateEnable(mId, isChecked);
>
> //                Toast.makeText(mContext, getToastMessage(isChecked),
> Toast.LENGTH_SHORT).show();
>             }
>         });
>
>         return (row);
>     }
>
>     private boolean isEnable(String value) {
>         boolean isEnable = false;
>         if (value.equals("true")) {
>             isEnable = true;
>         }
>         return isEnable;
>     }
>
>     private String getToastMessage(boolean isEnabled) {
>         if (isEnabled) {
>             return "Profile enabled";
>         } else {
>             return "Profile disabled";
>         }
>     }
>
> }
>
> My list_profile.xml: I'd like to pass the id to the listener in the adaper
> but don't know how to do that, so i put a element in the TableRow and make
> it invisible by setting the width and height to 0
>
> <?xml version="1.0" encoding="utf-8"?>
> <TableLayout xmlns:android="http://schemas.android.com/apk/res/android";
>     android:layout_width="fill_parent" android:layout_height="wrap_content"
>     android:stretchColumns="0" android:padding="5dp">
>     <TableRow>
>             <TextView xmlns:android="
> http://schemas.android.com/apk/res/android";
>                 android:id="@+id/profile_title"
> android:layout_width="fill_parent"
>                 android:layout_height="wrap_content"
>                 android:textSize="16sp"
>                 android:textColor="#ffffff"
>                 android:gravity="center_vertical"/>
>             <CheckBox android:id="@+id/cb_switch"
> android:layout_width="wrap_content" android:layout_height="wrap_content" />
>     </TableRow>
>     <TableRow>
>             <TextView android:textSize="12sp"
> android:id="@+id/profile_value"
>                 android:layout_width="fill_parent"
> android:layout_height="wrap_content">
>             </TextView>
>             <TextView android:textSize="0sp" android:id="@+id/id"
>             android:layout_width="0sp"
> android:layout_height="0sp"></TextView>
>     </TableRow>
> </TableLayout>
>
> The reference class:
>          String[] from = { "title", "enable", "value", "id"};
>
>         // the to array specifies the TextViews from the xml layout
>         // on which we want to display the values defined in the from array
>         int[] to = { R.id.profile_title, R.id.cb_switch,
> R.id.profile_value, R.id.id };
>
>         // get a reference to the ListView
>         listView = (ListView) findViewById(android.R.id.list);
>
>
>         adapter = new ProfileAdapter(this, rowList, R.layout.list_profile,
> from, to);
>
>         // nAdapter = new NewAdapter(this, pList);
>         listView.setAdapter(adapter);
>         listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
>         listView.setItemsCanFocus(false);
>
>
>
> On Wed, Apr 28, 2010 at 10:28 PM, TreKing <treking...@gmail.com> wrote:
>
>> On Tue, Apr 27, 2010 at 6:58 PM, Jeruliu <jeru....@gmail.com> wrote:
>>
>>> but there is way to detect the position of the item clicked???
>>
>>
>> Going off of what you have already, you could put the incoming position in
>> the checkbox's tag, then retrieve it when it's clicked.
>>
>>
>> -------------------------------------------------------------------------------------------------
>> TreKing - Chicago transit tracking app for Android-powered devices
>> http://sites.google.com/site/rezmobileapps/treking
>>
>>  --
>> You received this message because you are subscribed to the Google
>> Groups "Android Developers" group.
>> To post to this group, send email to android-developers@googlegroups.com
>> To unsubscribe from this group, send email to
>> android-developers+unsubscr...@googlegroups.com<android-developers%2bunsubscr...@googlegroups.com>
>> For more options, visit this group at
>> http://groups.google.com/group/android-developers?hl=en
>>
>
>

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

Reply via email to