- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 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/
我是一名优秀的程序员,十分优秀!