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?" };
>
> > [EMAIL PROTECTED]
> > 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
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---