views:

84

answers:

2

I want to show automatic checklist in android. For example I can have 4 list of item with unchecked check box adjutant to that.

After 5 sec. delay I want to check the first item then move on to second. At the end of 20 sec. I should have all 4 check box checked one by one.

Any idea how should I go on doing this ? I can use list view with checkbox opeion on ..right ??

I am a .net programmer and this is new experience for me so any comment / advise is appreciated.

A: 

For the automatic checking with delay, you should use an AsyncTask, like a thread where you can modify things within the Android main UI thread, i.e. like checking the checkboxes.

http://developer.android.com/resources/articles/painless-threading.html

http://www.xoriant.com/blog/mobile-application-development/android-async-task.html

http://developer.android.com/reference/android/os/AsyncTask.html

The checkboxes can be part of a listview, but don't have to be. You can also add them into a LinearLayout with vertical orientation one by one.

Mathias Lin
Do I use AlertDialog for that ?
Ved
No, not an AlertDialog (not sure where/why you would want to display that). Just an AsyncTask, that checks the checkboxes in your existing UI. Something like what Christian C. put into code above.
Mathias Lin
I am basically trying to show user the progress of the update. So like 2 out 4 itesm are checked which mean those 2 items are completed. This I want to show inside popup
Ved
+2  A: 

Here is a basic example I've just written:

public class AutoChecker extends Activity {
    private CheckBox checkbox1;
    private CheckBox checkbox2;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        checkbox1 = (CheckBox) findViewById(R.id.checkbox_1);
        checkbox2 = (CheckBox) findViewById(R.id.checkbox_2);

        new CheckerAsync(AutoChecker.this).execute(checkbox1, checkbox2);
    }

    private class CheckerAsync extends AsyncTask<CheckBox, CheckBox, Void>{
        private Activity mActivity;

        private CheckerAsync(Activity activity) {
            mActivity = activity;
        }
        @Override
        protected Void doInBackground(final CheckBox... checkboxes) {
            try {
                for(int i = 0, j = checkboxes.length; i < j; i++ ){
                    Thread.sleep(5000);
                    publishProgress(checkboxes[i]);
                }
            } catch (InterruptedException e) {}
            return null;
        }

        @Override
        public void onProgressUpdate(final CheckBox... checkboxes){
            mActivity.runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    checkboxes[0].setChecked(true);
                }
            });
        }
    }
}

This is the XML layout:

<?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"
    >
<CheckBox
    android:id="@+id/checkbox_1"  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="Checkbox 1"
    />
<CheckBox
    android:id="@+id/checkbox_2"  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="Checkbox 2"
    />
</LinearLayout>

Explanation

It uses a class that extends AsyncTask which allows you to use threading in a easy to use/understand way. The way this class is executed is kind of simple:

new CheckerAsync(AutoChecker.this).execute(checkbox1, checkbox2);

You can add as many checkboxes as you want. For instance:

new CheckerAsync(AutoChecker.this).execute(checkbox1, checkbox2, checkbox4, checkbox3);

By the way, I don't know why you are trying to do this. But, if it's for testing purposes, you better take a look at the instrumentation framework.

Cristian
Thanks for the sample code Cristian. I am basically trying to show user the progress of the update. So like 2 out 4 itesm are checked which mean those 2 items are completed. Do you think I can do this in Popup instead of activity ?tx
Ved
yes,you can also do it in a popup. you need to create a custom Dialog for that. http://developer.android.com/guide/topics/ui/dialogs.html
Mathias Lin