【发布时间】:2014-05-26 05:23:12
【问题描述】:
我的列表视图项有一个文本视图、图像视图和复选框。当我单击复选框时,我会收到 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" />
我的适配器代码
@Override
public View getView(int position, View convertView, ViewGroup parent) {
String todayDate = Utilities.getTodayDate();
String tomorrowDate = Utilities.getTomorrowDate();
ViewHelper viewholder = null;
DividerHelper dividerviewholder = null;
int view = getItemViewType(position);
if(view == TYPE_HEADER)
{
//perform header actions
}
else
{
//Cursor c = (Cursor) getItem(position-cursorPosition);
Cursor c = (Cursor) getItem(position);
if(convertView == null)
{
viewholder = new ViewHelper();
convertView = mLayoutInflater.inflate(R.layout.layout_item, parent, false);
viewholder.title = (TextView)convertView.findViewById(R.id.ID_item_title);
viewholder.Notes = (TextView)convertView.findViewById(R.id.ID_item_notes);
viewholder.Status = (CheckBox)convertView.findViewById(R.id.ID_item_is_completed_checkbox);
convertView.setTag(viewholder);
viewholder.Status.setTag(viewholder);
viewholder.Status.setOnClickListener(completedCheckboxListener);
}
else
{
viewholder = (ViewHelper)convertView.getTag();
}
viewholder.primaryKey = c.getInt(0);
viewholder.Notes = c.getString(9);
viewholder.Title = c.getString(3);
}
return convertView;
}
【问题讨论】:
-
那个选项不存在,我想我试过了。如果我们点击复选框,有没有办法获得点击的视图,即整行?
-
每个视图都应该有 getParent() 来获取视图的父级。否则,您可以将 onClickListener() 写入 listadapter 的 getView 中,您可以将动画设置为列表的整个 rowView(在 getView() 中)。
-
尝试将父引用设置为 setTag() 到 CheckBox 并尝试在 onClick 使用 getTag() 访问此引用...
-
我需要动画只在单击复选框时执行,而不是在整个视图上执行。
-
嗨,harish,我尝试了这种方法,但如果我这样做,我会得到正确的动画,但它会留下一些空白的视图。整个列表视图的行为正在改变:(。我认为这也不是最好的尝试方式
标签: android checkbox android-listview android-animation android-listfragment