gpt4 book ai didi

java - TextView.post Runnable 并不总是有效

转载 作者:行者123 更新时间:2023-12-01 14:06:17 25 4
gpt4 key购买 nike

我有一个 ListView,可以通过单击标签来删除项目。这个ListView是在我自己的继承自BaseAdapter的Adapter中。单击此标签后,我将调用一个方法,从存储在我的适配器中的数据数组中删除该元素。
每个元素都包含一些布局内容,并且在一个布局中包含一个 TextView。有时这个 View 应该是可见的。但我只知道在 Listview ist 布局之后它是否应该可见! (我问它是否是椭圆形的)所以我将 post 方法与 Runnable 一起使用。

在我的 getView 方法中,我有以下 Runnable 语句:

holder.llMyItem.post(new Runnable() {
@Override
public void run() {
if (...) {
holder.lblExpand.setVisibility(View.VISIBLE);
}
}
});

llMyItem 是 ListView 中项目的 LinearLayout。

lblExpand 是我的 TextView,应该可见或不可见。

我的 View 第一次出现时,它在 Android 4.3 上运行良好。但在 Android 2.1 上它不起作用。

该标签仅在我单击 View 上的“下一步”按钮后才会出现。就在我的 Activity 完成之前,我的 Textview 将出现。但已经太晚了!还有第二个问题:当我使用以下方法删除列表中的一项后,在调用 notifyDataSetChanged 后它将不起作用。触摸屏幕上的某个位置后,可运行程序就会启动。

我认为这两个问题有相同的根源。

这是删除项目的方法的代码(我简化了它)

public void removeListItem(int position) {
//do some animation stuff
ArrayList<SomeClass> data = getData();
data.remove (position);
notifyDataSetChanged();
}

(“删除元素”工作正常)

我尝试使用ListView上的invalidate方法来重绘它。但它仍然不起作用。布局完成后,Runnable 未启动。

有人可以帮我吗?

最佳答案

刚刚解决了!

我没有将 Runnable 添加到布局中,而是将其添加到处理程序中。

现在看起来像这样:在我的 getView 方法中,我添加了这一行

//uiHandler is a private Attribute    
uihandler = new Handler();

在我的创建方法中,我在新处理程序上调用 post 方法

uiHandler.post(new Runnable() {
@Override
public void run() {
if (...){
holder.lblExpand.setVisibility(View.VISIBLE);
}
}
});

我得到的提示是: https://stackoverflow.com/a/4083830/2380896

这个答案高于其他答案,有助于理解为什么它并不总是有效: https://stackoverflow.com/a/10457064/2380896

关于java - TextView.post Runnable 并不总是有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18873760/

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