3

在我的 getView 方法中,我想获得一个特定的子视图。我知道我的适配器通过调用 getCount 来保存几个项目:

getCount();

根据JavaDoc:

public abstract int getCount () 
Added in API level 1
How many items are in the data set represented by this Adapter.

现在在我的 getView 方法中:

public View getView(final int position, View convertView, ViewGroup parent) {

   View lastAddedItem = parent.getChildAt(getCount()-1);
   if(lastAddedItem == null)  {
     Log.w("ListAdapter", "View is null");
   }

}

此消息总是出现在 中LogCat,这意味着我尝试抓取的视图是Null

我也试过这个:

View lastAddedItem = parent.getChildAt(parent.getChildCount()-1);

那么如何从我的ViewGroup对象中获取特定视图呢?

4

2 回答 2

3

我知道我的适配器通过调用 getCount 来保存几个项目:

是的,但是适配器的getCount()(返回Adapter 中ListView的项目)方法与获取 a的子级无关getChildAt()(您应该使用getChildCount()它,因为这将返回 中的Views 当前ViewGroup)。

lastAddedItem = parent.getChildAt(parent.getChildCount()-1);

这应该返回一个非空视图,即该getView()方法返回的最后一个视图。

我只想为我的 ViewGroup 中的特定视图设置动画

如果您要在列表行(或该行的一部分)变为可见时对其进行动画处理,则为 注册滚动侦听器ListView并在目标视图出现在屏幕上时从那里开始动画。

于 2013-03-04T12:06:42.660 回答
0

我不知道你是如何实现适配器的其余部分的,但如果你以正确的方式做,我是对的,父级只包含显示在设备屏幕上的视图,每次你下拉或拉起列表,它会修改那些视图的内容,这就是你得到 Null 的原因。

您想要实现的(动画视图)应该在运行时完成,检查当前显示在屏幕上的视图是否应该动画。

希望能帮助到你。

于 2013-03-04T12:03:38.687 回答