Could you please explain what you are witnessing? (I work on ListView,
I'd like to help... :)

There's another issue in your code. In the for loop, you are comparing
a position (arg2) with an index (i). These are different and mixing
them will cause tons of "weird" issues.

On Wed, Oct 22, 2008 at 7:49 PM, kingkung <[EMAIL PROTECTED]> wrote:
>
> I kind of wanted people to try it and find out :)  I can try that, but
> it doesn't look like it's a race condition (like something gets called
> too early or something) of any kind... it's a very distinct pattern of
> behavior that's happening, though it's not what I would consider the
> expected behavior...
>
> On Oct 22, 7:40 pm, "Romain Guy" <[EMAIL PROTECTED]> wrote:
>> You haven't explained what the crazy behavior is :) My bet is that you
>> call isChecked() too early. Try to postpone everything you do in the
>> OnItemClickListener by posting a Runnable into a Handler (or with
>> getListView().post()).
>>
>>
>>
>> On Wed, Oct 22, 2008 at 7:31 PM, kingkung <[EMAIL PROTECTED]> wrote:
>>
>> > I wrote a small activity which illustrates some crazy behavior I found
>> > while implementing ListView and choices.  Feel free to plug this in
>> > and try it yourselves (and be sure to check logcat as well):
>>
>> > public class TestActivity extends ListActivity {
>>
>> >        public String[] strings = { "What","the","devil","is","happening?" 
>> > };
>>
>> >        @Override
>> >    public void onCreate(Bundle icicle) {
>> >        super.onCreate(icicle);
>> >        setContentView(R.layout.listview);
>> >        getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);
>> >        getListView().setAdapter(new
>> > ArrayAdapter<String>(this,R.layout.main,strings));
>> >        getListView().setOnItemClickListener(new OnItemClickListener()
>> > {
>> >                        public void onItemClick(AdapterView<?> arg0, View 
>> > arg1, int arg2,
>> >                                        long arg3) {
>> >                                        Log.d("test","Checked: "+
>> > ((TextView)getListView().getChildAt(arg2)).getText().toString());
>> >                                        if 
>> > (getListView().isItemChecked(arg2))
>> >                                        {
>> >                                                for (int i=0; 
>> > i<getListView().getChildCount(); i++)
>> >                                                {
>> >                                                        if (i==arg2)
>> >                                                                
>> > getListView().getChildAt(i).setBackgroundColor(Color.MAGENTA);
>> >                                                        else
>>
>> > getListView().getChildAt(i).setBackgroundColor(Color.TRANSPARENT);
>> >                                                }
>> >                                        }
>> >                                        else
>>
>> > getListView().getChildAt(arg2).setBackgroundColor(Color.TRANSPARENT);
>>
>> >                                }
>> >        });
>> >    }
>> > }
>>
>> > The R.layout.main is just your standard default TextView when you
>> > create a new project in Eclipse.  The R.layout.listview is the
>> > standard LinearLayout with embedded ListView for ListActivities shown
>> > below:
>>
>> > <?xml version="1.0" encoding="utf-8"?>
>> > <LinearLayout xmlns:android="http://schemas.android.com/apk/res/
>> > android"
>> >      android:layout_width="fill_parent"
>> >    android:layout_height="fill_parent"
>> >    android:orientation="vertical"
>>
>> >        <ListView android:id="@+id/android:list"
>> >        android:layout_width="fill_parent"
>> >        android:layout_height="wrap_content"
>> >    />
>> > </LinearLayout>
>>
>> > Can anyone explain rationally what is causing this to happen?
>>
>> --
>> Romain Guywww.curious-creature.org
> >
>



-- 
Romain Guy
www.curious-creature.org

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