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