使用ArrayList中的指定数字,如何使列表视图中的复选框可见?

时间:2017-09-16 13:31:43

标签: android listview checkbox

我有ArrayList个电话号码:

ArrayList<String> MatchingContacts;

phone_inflate_listview.xml我的复选框visibilty设置为invisible

        <CheckBox
            android:id="@+id/checkBoxContact"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:checked="false"
            android:visibility="invisible"
            android:clickable="true"
 />

如果phoneNumberofContact属于MatchingContacts,我希望此电话号码(可以是一个或多个)显示在ListView的顶部,其他电话号码显示在下方

我使用此代码在AsyncTask doInBackground

中执行此操作
   //if a phone number is in our array of matching contacts*/
            if (MatchingContacts.contains(phoneNumberofContact))

            {
                // insert the contact at the beginning of the listview
                selectPhoneContacts.add(0, selectContact);
            }

            else {
                // insert it at the end (default)
                selectPhoneContacts.add(selectContact);
            }

            selectContact.setName(phoneNameofContact);
            selectContact.setPhone(phoneNumberofContact);
        }

对于checkbox顶部的数字,属于ListView的数字,如何使MatchingContacts显示为可见?

而不只是selectPhoneContacts.add(0, selectContact);我尝试过:

        selectPhoneContacts.add(0, selectContact);
        checkBoxforContact.setVisibility(View.VISIBLE);

但是我收到了一个错误,说我必须在UI线程中执行此操作。所以在onPostExecute我添加了:

    //if a phone number is in our array of matching contacts*/
    if (MatchingContacts.contains(phoneNumberofContact))

    {
        checkBoxforContact.setVisibility(View.VISIBLE);
    }

    adapter.notifyDataSetChanged();

没有错误,应用程序加载正常,但我的所有复选框仍然不可见。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

selectContact - 可以再增加一个变量&#34; isCbVisible&#34;指示是否启用/禁用复选框。然后,设置&#34; isCbVisible&#34;的值。在doInBackground内满足条件时为true。 在listview方法的getView()中,你需要检查&#34; isCbVisible&#34;的值。然后显示/隐藏复选框。