Android 如何获取listview项目中复选框的父视图

Android 如何获取listview项目中复选框的父视图,android,checkbox,android-listview,android-animation,android-listfragment,Android,Checkbox,Android Listview,Android Animation,Android Listfragment,“我的listview”项具有文本视图、图像视图和复选框。当我单击复选框“将事件获取到setonclick侦听器”时,我需要用动画删除已删除的行 因此,如果我使用复选框视图,我将仅为复选框获取动画外观,而不为其他视图(如textview、imageview)获取动画外观 下面是动画代码 OnClickListener CheckboxListener = new OnClickListener() { @Override public void onClick

“我的listview”项具有文本视图、图像视图和复选框。当我单击复选框“将事件获取到setonclick侦听器”时,我需要用动画删除已删除的行

因此,如果我使用复选框视图,我将仅为复选框获取动画外观,而不为其他视图(如textview、imageview)获取动画外观

下面是动画代码

 OnClickListener CheckboxListener = new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

            CheckBox cb = (CheckBox) v ; 

             final Animation animation = AnimationUtils.loadAnimation(v.getContext(), R.anim.splashfadeout);
                v.startAnimation(animation);
                Handler handle = new Handler();
                handle.postDelayed(new Runnable() {

                    @Override
                    public void run() {
                        // TODO Auto-generated method stub
                       mcompletecallback.completePressedItem(cursorHelper.primaryKey);
                        notifyDataSetChanged();
                        animation.cancel();
                    }
                }, 1000);
}
}
在这个
v
中是复选框视图,但我想知道保存复选框的视图,如果我在其上应用动画,它将平滑工作。但我想知道怎么把它弄到这里

这是我的动画xml代码

<?xml version="1.0" encoding="utf-8"?>

<scale
    android:duration="500"
    android:fromXScale="1.0"
    android:fromYScale="1.0"
    android:interpolator="@android:anim/linear_interpolator"
    android:toXScale="1.0"
    android:toYScale="0.0" />

在该listview上应用McClickListener,当您单击该行时,您将获得

@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id)
{
    //here "view" is your complete row that you clicked where you can find your checkbox

}
@覆盖
public void onItemClick(AdapterView父对象、视图、整型位置、长id)
{
//这里的“视图”是您单击的完整行,您可以在其中找到您的复选框
}

多亏了
Sripathi和Navjot Bedi

我知道该怎么做

我们需要调用
viewv1=(View)cb.getParent()
获取复选框的父视图,然后

调用V1对象上的动画

Animation Animation=AnimationUtils.loadAnimation(v1.getContext(),R.anim.splashfadeout); CompleteUponCompletionofAnimation(动画,cursorHelper.key); v1.开始动画(动画)

同样在convertview中,通过放置NULL来删除动画

if(convertView == null)
{
}
else
{
if(convertView.getAnimation() != null)
convertView.setAnimation(null);
}

那个选项不存在,我想我试过了。如果我们单击复选框,是否有一种方法可以获得单击的视图,即整行?每个视图都应该有getParent()来获取视图的父视图。否则,您可以将onClickListener()写入listadapter的getView,并将动画设置为列表的整个rowView(在getView()中)。尝试将父引用设置为setTag(),并尝试使用getTag()在onClick访问此引用……我需要仅在单击复选框时执行动画,不是在整个视图上。嗨,harish,我尝试过这种方法,但是如果我这样做,我会得到正确的动画,但是它会留下一些空白的视图。整个listview行为正在发生变化:(.我认为这不是尝试alsoHi Navajot的最佳方式,感谢您的回复,我希望动画只在单击复选框时执行,而不是单击listviewHi鸣人,然后您可以将完整行视图的标记设置为复选框视图“checkbox.settag(行)”,并且无论何时单击复选框,都将从标记“(查看)复选框.gettag()中获取该行在测试中,我尝试将整个视图对象放在标记中,并在复选框clicklistner中访问标记对象并应用动画,效果很好。但在这里,listview的行为是关联的&删除项目后,我会遇到阻碍视图。这也不是一个好主意。您需要在的getView上处理您的listview适配器,而不是填充通过维护arraylist或其他内容删除的视图。您可以查看此库的源代码,这将解决您的问题
public void CompleteUponCompletionofAnimation(Animation fadeout, final int pk)
    {
        fadeout.setAnimationListener(new AnimationListener() {
            @Override
            public void onAnimationStart(Animation animation) { }
            @Override
            public void onAnimationRepeat(Animation animation) { }

            @Override
            public void onAnimationEnd(Animation animation) {
                //your change at end of animation
               notifyDataSetChanged();
            }
        });
    }
if(convertView == null)
{
}
else
{
if(convertView.getAnimation() != null)
convertView.setAnimation(null);
}