Android Listview没有更新

El *_*ino 7 android android-listview layout-animation

我有一个带有自定义适配器的ListView,显示来自数据库的信息.当我启动应用程序时,数据将从数据库中读取,并提供给适配器,然后将适配器附加到ListView.在ListView上运行LayoutAnimationController,平滑地显示内容.

    this._lvList = (ListView)_v.findViewById(R.id.lvList);
    this._lvList.setAdapter(new TableAdapter(getActivity(),R.layout.tablerow,Category.getCategories()));
    LayoutAnimationController lac = new LayoutAnimationController(AnimationUtils.loadAnimation(getActivity(), R.anim.slide_in_left));
    lac.setDelay(0.2f);
    this._lvList.setLayoutAnimation(lac);       
    this._lvList.startLayoutAnimation();
Run Code Online (Sandbox Code Playgroud)

没问题.

现在,当我单击ListView的任何条目时,未单击的条目将消失,单击的条目将成为列表中唯一的条目,并按预期显示在顶部.

View v;
for(int i = 0;i<_lvList.getChildCount();i++) {
    v = this._lvList.getChildAt(i);
    if(v!=clickedView) {
           Animation animSlideOut = AnimationUtils.loadAnimation(getActivity(), i%2==0?R.anim.slide_out_left:R.anim.slide_out_right);
           animSlideOut.setStartOffset(i*50);

           // some more stuff

    }
    v.startAnimation(animSlideOut);
}
Run Code Online (Sandbox Code Playgroud)

这也有效,但现在问题是,如果我再次单击该单个列表条目,我希望列表重新填充,再次显示所有项目.

我认为我可以从一开始就使用代码(第一个代码段),因为它在启动应用程序时工作正常,但是......这次......它没有.没有动画发生.原因是,我的ListView中没有动画视图(除了上一步中的动画).

而不是创建一个新的Tableadapter我已经尝试清除它,填写新的,称为notifyDataSetChanged()...没有用,因为

_lvList.getChildCount();
Run Code Online (Sandbox Code Playgroud)

stills返回1个视图,而适配器包含所有18个条目.我也试过了

requestLayout();
forceLayout();
invalidate();
invalidateViews();
Run Code Online (Sandbox Code Playgroud)

强制ListView在动画之前生成其子视图,但它不起作用.因此,在我调用布局动画之后,ListView会立即出现.

简介:我的ListView在布局动画开始之前不包含子视图,如何强制它生成它们?

Thx提前:)

Dav*_* T. 1

嗯...你已经做到了吗?(以下)

在您的自定义适配器中,重写该方法:

@Override
public View getView(int position, View convertView, ViewGroup parent){
    //the position of the item, the convertView is the view layout of what that row is

}
Run Code Online (Sandbox Code Playgroud)

更改列表视图的更新方式。Android 每隔一段时间就会调用这个 getView 方法来刷新视图(您不需要手动调用它)

另外,我想你只需要打电话

listView.notifiyDataSetChanged()listView.invalidate()在重新填充列表后强制更新

您可以在此处阅读有关列表视图的更多信息:

http://www.vogella.com/articles/AndroidListView/article.html

http://developer.android.com/guide/topics/ui/layout/listview.html