I am facing weird UI behavior issue.
When I set *listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);*
onListItemClick behave incorrectly... Let me know if I am missing
anything here.

When I comment following line
    listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);

This UI works fine as expected but following part of code doesn't work
    long[] idsList = getListView().getCheckedItemIds();
    Log.i(TAG,"number of rows selected"+idsList.length);

Expected UI change is when i click on one list item it should toggle
its checked state, which does not happen it toggles other list item..
Strange!!!!



File:Listbox.java

package checkbox.list.com;
import android.app.ListActivity;
import android.database.Cursor;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.CheckedTextView;
import android.widget.ListView;
import android.provider.ContactsContract.CommonDataKinds.Phone;


public class listbox extends ListActivity {
private static final String TAG = "listbox";
Cursor mCursor = null;
ListView listView = null;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    listView = getListView();
    LoadList();
    //listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
}

@Override
protected void onListItemClick(ListView l, View v, int position, long
id) {
    int pos = l.getPositionForView(v);
    Log.i(TAG,"pos of view"+pos);
    CheckedTextView txtview = (CheckedTextView)
v.findViewById(android.R.id.text1);
    txtview.toggle();
    long[] idsList = getListView().getCheckedItemIds();
    Log.i(TAG,"number of rows selected"+idsList.length);
}

private void LoadList() {
    mCursor = this.getContentResolver().query(Phone.CONTENT_URI, null,
null, null, null);
    startManagingCursor(mCursor);

    String [] from=new String []{Phone.DISPLAY_NAME,Phone.TYPE};
    int [] to=new int [] {android.R.id.text1, android.R.id.text2};
    MyCursorAdapter sca=new
MyCursorAdapter(this,R.layout.fetchrow,mCursor,from,to);
    setListAdapter(sca);
}
}

File:MyCursorAdapter.java

package checkbox.list.com;
import android.content.Context;
import android.database.Cursor;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CheckedTextView;
import android.widget.SimpleCursorAdapter;
import android.widget.TextView;

public class MyCursorAdapter extends SimpleCursorAdapter {
    protected static final String TAG = "MyCursorAdapter";
    private Cursor mCursor;
    private String []strFromCols;
    private int []toView;

    public MyCursorAdapter(Context context, int layout, Cursor c,
            String[] from, int[] to) {
        super(context, layout, c, from, to);
        mCursor = c;
        strFromCols = from;
        toView = to;
    }
    public View getView(int pos, View inView, ViewGroup parent) {
        View v =  super.getView(pos,inView,parent);
        mCursor.moveToPosition(pos);

        final CheckedTextView chkTxt = (CheckedTextView)
v.findViewById(toView[0]);
        String name=
mCursor.getString(mCursor.getColumnIndex(strFromCols[0]));
        chkTxt.setText(name);
//      chkTxt.setOnClickListener(new OnClickListener() {
//
//          @Override
//          public void onClick(View v) {
//              chkTxt.toggle();
//          }
//      });
        TextView txtPhone = (TextView) v.findViewById(toView[1]);
        String phone =
mCursor.getString(mCursor.getColumnIndex(strFromCols[1]));
        txtPhone.setText(phone);
        return (v);
    }
}

File: main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/
android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="top">
<ListView
    android:id="@id/android:list"
    android:layout_width="fill_parent"
    android:numColumns="1"
    android:stretchMode="columnWidth"
    android:gravity="top"
    android:layout_height="wrap_content"
android:layout_gravity="bottom|top"/>

<Button
    android:text="delete"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
   />
</LinearLayout>

File:fetchrow.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/
android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">

<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/
android"
    android:id="@android:id/text1"
    android:layout_width="match_parent"
    android:layout_height="?android:attr/listPreferredItemHeight"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:gravity="center_vertical"
    android:checkMark="?android:attr/listChoiceIndicatorMultiple"
    android:paddingLeft="6dip"
    android:paddingRight="6dip"


/>

    <TextView android:id="@android:id/text2"
        android:textSize="16sp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:focusable="false"/>


</LinearLayout>

-- 
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