我有一个 ListView 可以通过单击标签来删除项目。这个 ListView 在我自己的继承自 BaseAdapter 的适配器中。单击此标签后,我将调用一个从存储在我的适配器中的数据数组中删除元素的方法。
每个元素都包含一些 Layout 的东西,并且在一个 Layout 中包含一个 TextView。有时这个视图应该是可见的。但我只知道它是否应该在 Listview ist layoutet 之后可见!(我在问它是否是椭圆形的)所以我使用了带有 Runnable 的 post 方法。
在我的getView
方法中,我有以下 Runnable 语句:
holder.llMyItem.post(new Runnable() {
@Override
public void run() {
if (...) {
holder.lblExpand.setVisibility(View.VISIBLE);
}
}
});
llMyItem
是 ListView 中项目的 LinearLayout。
lblExpand
是我的 TextView 是否应该可见。
我的视图第一次出现时,它在 Android 4.3 上运行良好。但在 Android 2.1 上它不起作用。
标签仅在我单击视图上的“下一步”按钮后才会出现。就在我的活动完成之前,我的 Textview 会出现。但这为时已晚!还有第二个问题:我用下面的方法删除列表中的一项后,调用notifyDataSetChanged
. 只需触摸屏幕上的某处,可运行文件就会启动。
我认为这两个问题的根源相同。
这是删除项目的方法的代码(我简化了它)
public void removeListItem(int position) {
//do some animation stuff
ArrayList<SomeClass> data = getData();
data.remove (position);
notifyDataSetChanged();
}
(“项目删除的东西”工作正常)
我尝试使用 ListView 上的 invalidate 方法来重绘它。但它仍然无法正常工作。布局完成后 Runnable 未启动。
有谁能够帮我?