2012-04-12 68 views
8

我试图重新ListView(和AbsListView)逻辑,可欣赏回收利用。 我需要这个,但我们可以说这只是为了理解Android逻辑。只有重新布局的孩子,而不是所有的树

假设我的孩子项目是相同的(相同的布局),使用固定高度RelativeLayout

在滚动过程中,我重新使用ghost子视图并为当前项设置属性。 它工作正常,因为我使用View.offsetTopAndBottom()invalidate()而不是在滚动期间请求布局以进行优化。

我的问题是更新孩子(RelativeLayout)。

取决于项目,我想隐藏或关于该项目显示ImageView。为此,我只使用iconImage.setVisibility(GONE)iconImage.setVisibility(VISIBLE)

由于我堵requestLayout,这似乎是setVisibility()不能正常工作。

如果我使用requestLayout,所有的树将测量和布局本身,它不是一个滚动的用户体验的好方法。

有没有一种方法只有请求布局回收子项目?

回答

-2

您需要通知用的观点改变了你的ListView这么叫notifyDataSetChanged();从Uithread这样的:

 final ArrayAdapter adapter = ((ArrayAdapter) getListAdapter()); 
    runOnUiThread(new Runnable() { 
     @Override 
     public void run() { 
      adapter.notifyDataSetChanged(); 
     } 
    }); 
相关问题