gpt4 book ai didi

android - 如何知道 Android ListView 何时完成填充

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:26:16 24 4
gpt4 key购买 nike

我有一个包含 ListView 的子 Activity 。此 Activity 是从 SQLite 游标异步填充的。列表项包含一个 TextView、一个 RadioButton 和一个普通的 Button。 XML 如下所示:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout android:id="@+id/rlCategoryListItemLayout" xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content">
<TextView android:id="@+id/tvCategoryListItemTitle" style="@style/uwLargeListItemLabelStyle" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_centerVertical="true" android:singleLine="true" android:text="This is a test note title" />
<LinearLayout android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_alignParentRight="true" android:gravity="center_vertical">
<RadioButton android:id="@+id/rdoCategoryListItemSelect" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_marginRight="10dip" />
<Button android:id="@+id/btnCategoryListItemDelete" android:background="@drawable/delete_red" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" />
</LinearLayout>
</RelativeLayout>

我必须执行一些逻辑来确定默认选择哪个 RadioButton,并且在 ListView 已加载之前我无法执行此操作。问题是,对于我迄今为止尝试过的所有事件(onCreate、onPostCreate、onResume、onWindowFocusChanged),ListView 子项计数为零。我也试过在 ArrayAdapter 类中使用 getView 方法,但该方法被多次调用,每次 ListView 子计数都可能不同,从而导致意外结果。显然,这些事件是在 ListView 完全填充其子项之前触发的。

是否有我可以监听的事件,或者是否有其他方法来确定 ListView 何时完成填充以及是否可以访问其所有子项以便以编程方式进行修改?

谢谢!

最佳答案

您可以使用 Handler 来完成此任务,如下所示:

在您的 Activity 中添加处理程序作为任何其他属性。

private Handler mListViewDidLoadHanlder = new Handler(new Handler.Callback() { 
@Override
public boolean handleMessage(Message message) {
//Do whatever you need here the listview is loaded
return false;
}
});

然后在 listview 适配器的 getView 方法中进行比较以查看当前位置是否是最后一个,因此,它将完成(只需将其放在返回之前):

public View getView(int position, View convertView, ViewGroup parent) {
//Your views logic here

if (position == mObjects.size() - 1) {
mViewDidLoadHanlder.sendEmptyMessage(0);
}

return convertView;
}

关于android - 如何知道 Android ListView 何时完成填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4039206/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com