Put a listener on your checkboxes and update your array from there...
Then, you only need to check your array, which is much faster and easier
to handle anyway.
On 04/07/2010 8:20 AM, SirAndroidDev wrote:
Thanks. I finally got this going. However, I may not be handling
this situation the best way.
Now I've been struggling for several more days on another issue.
So, I have a ListView with the following for the row.xml:
<?xml version="1.0" encoding="utf-8"?>
<com.test.CheckableLinearLayout xmlns:android="http://
schemas.android.com/apk/res/android"
android:id="@+id/LinearLayout01"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<ImageView
android:src="@drawable/icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:focusable="false"
android:layout_marginLeft="5dip"/>
<TextView
android:id="@+id/filename"
android:layout_width="wrap_content"
android:textSize="14sp"
android:layout_height="wrap_content"
android:padding="5dip"
android:textColor="#FFFFFF"
android:layout_weight="1.0" />
<TextView
android:text=""
android:id="@+id/fileDetails"
android:textSize="10sp"
android:textColor="#FFFFFF"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center" />
<CheckedTextView
android:id="@+id/ctv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="6dip"
android:background="#00000000"
android:focusable="false"
android:clickable="false"
android:checked="false"
android:checkMark="@drawable/checkedstate" />
</com.test.CheckableLinearLayout>
Now, I can get each item to go into an ArrayList<String> and then I
perform an operation on that array. Plus, each row in the ListView
will show my checkbox properly checked and unchecked as the user
performs clicks on the CheckedTextViews for each row. However, I'm
now having a problem where I cannot get a list of currently checked
(read: clicked on) items. I found getCheckedItemPositions() and
getCheckItemIds(), but I was not able to get them to handle what I
need, that is to see what checkboxes are NOT checked.
Example, a user clicks on three checkboxes (read: 3 rows), showing he/
she wants to do something with three selected files in the
ListView.... so far so good. Now, the user UNCHECKS (or un-selects if
you like) one of the checkboxes. I try to check (if()) to see which
checkbox was unchecked but when I try to test against the ctv (name of
my CheckedTextView), no go. That only works for the first row in the
ListView, it's fails for all of the rest of the rows. so I can
uncheck the first row, check it, unchecked and all that works fine,
just not when I do that on any other row (read: checkbox).
There has got to be a simple way to test for checked and unchecked
CheckedTextViews in a ListView? If so, can you push me in the right
direction Mickey (or someone)?
Here is where I'm at (in the middle of a testing what ever I could to
get this going so the code is sloppy and I left off the "else" clause
part for the overall conditional. (the multiselect is for a button a
user clicks to allow for multiple row selection (which I want to be in
sync with the checkedtextview states, when a row is clicked)
@Override
protected void onListItemClick(ListView l, View v, int position, long
id) {
super.onListItemClick(l, v, position, id);
try {
multiselect = (ImageButton) findViewById(R.id.multiselect);
// multiselect.getTag().toString() == "1"
if (checkedstate == 1) {
// Set the Checkbox in explore.xml to checked or
unchecked when
user clicks on row
ctv = (CheckedTextView) findViewById(R.id.ctv);
ctv.toggle();
if(ctv.isChecked() == true){
f = new File(root + item.get(position) +
".txt");
filesArray.add(f.toString());
//
//
// for(int i=0; i<
lv.getCheckItemIds().length; i++){
// Log.i("getCII",
lv.getCheckItemIds()[i]+"");
// }
Log.i("checked", "checked");
}else if (ctv.isChecked() == false){
for(int i=0; i<
filesArray.size(); i++){
if(f.toString() ==
filesArray.get(i).toString()){
filesArray.remove(i);
// Log.i("not
checked", filesArray.get(i).toString());
}
}
Log.i("not checked", "not checked");
}
Thanks.
On Jun 24, 5:58 am, Mickey<[email protected]> wrote:
Hi,
I'm not sure if I truly understood your problem but one thing I would
suggest is to check the API Demos app that is shipped with the SDK, if
you haven't done yet.
In particular, there's a class named List11.java which gives you a
brief overview on how to use the CheckedTextView.
In the case you still have problem, you might want to post some code
in order to make this clear.
Cheers,
Mic
On Jun 8, 3:08 am, SirAndroidDev<[email protected]> wrote:
I'm really frusterated at this point, three days in. I've put many
hours into this issu and am no closer to having a working (let alone
proper) solution. Why is this so painful to accomplish I wonder
aloud.
Problem:
I've got a a ListView which has a row.xml for each row in the
ListView. That file has two TextView's, ImageView, and aCheckedTextView.
Now, I can get oneCheckedTextViewto become checked by pressing on
its UI area. But, I cannnot not check any other unchecked checkbox in
the ListView.
Further more I see checkboxes when I scroll down that have checkmarks
in them where I did not check such myself.
So, what is the issue? One of you google engineers surely can explain
this to us end-devs, better yet please supply a sample project. I
have each row also where the user can select a file and work is done
with it when that path is pasted back to the main activity (which
works fine).
I have half the hair I had 72 hours ago (because I pulled half out).
Please, please help those of us struggling with this important feature
(CheckedTextView). As I see several posts about this, anything from
implement Clickable on the class (which I did, both trying on the main
java file and as a helper class) toCheckedTextViewhas to be the
parent in the xml file (not say a LinearLayout for example).
Please...... help... drowing ..... in ... stess.
Thank you- Hide quoted text -
- Show quoted text -
--
Sincerely,
Brad Gies
-----------------------------------------------------------------------
Bistro Bot - Bistro
Blurbhttp://www.bgies.comhttp://www.bistroblurb.comhttp://www.ihottonight.com
-----------------------------------------------------------------------
Never doubt that a small group of thoughtful, committed people can
change the world. Indeed. It is the only thing that ever has - Margaret Mead-
Hide quoted text -
- Show quoted text -