我有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();
没有错误,应用程序加载正常,但我的所有复选框仍然不可见。有什么想法吗?
答案 0 :(得分:0)
selectContact - 可以再增加一个变量&#34; isCbVisible&#34;指示是否启用/禁用复选框。然后,设置&#34; isCbVisible&#34;的值。在doInBackground内满足条件时为true。 在listview方法的getView()中,你需要检查&#34; isCbVisible&#34;的值。然后显示/隐藏复选框。