Android 无需在gridview中单击即可调用特定项

Android 无需在gridview中单击即可调用特定项,android,viewflipper,Android,Viewflipper,我正在开发一个纸牌游戏。我有一个gridview,每个grid项都是一个viewflipper。每个ViewFlipper都有一个textview和一个imageview。在三维动画中,单击项目将从textview翻转到imageview。我想在viewflipper动画结束后开始另一个项目的动画。(注意:我在adapter类中的viewflipper上添加了click listener) 下面是适配器代码: public class MyGridViewAdapter extends Base

我正在开发一个纸牌游戏。我有一个gridview,每个grid项都是一个viewflipper。每个ViewFlipper都有一个textview和一个imageview。在三维动画中,单击项目将从textview翻转到imageview。我想在viewflipper动画结束后开始另一个项目的动画。(注意:我在adapter类中的viewflipper上添加了click listener)

下面是适配器代码:

public class MyGridViewAdapter extends BaseAdapter  {
    int[]icons;
    Context context;
    int counter;
    View view = null;
    GridView grid;
     HashMap<String,View> hashMap;

    public MyGridViewAdapter(int[] icons,Context context,GridView grid) {
        // TODO Auto-generated constructor stub
    this.icons=icons;
    this.context=context;
    this.grid=grid;
    }
    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return icons.length;
    }

    @Override
    public Object getItem(int arg0) {
        // TODO Auto-generated method stub
        return icons[arg0];
    }

    @Override
    public long getItemId(int arg0) {
        // TODO Auto-generated method stub
        return 0;
    }

    @Override
    public View getView(final int arg0, final View arg1, ViewGroup arg2) {
        // TODO Auto-generated method stub

        hashMap=new HashMap<String,View>();
        LayoutInflater layoutInflater=(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        final ViewHolder viewHolder=new ViewHolder();

        if(arg1==null){
        view=new View(context);
        view=layoutInflater.inflate(R.layout.view_flipper, null);
        viewHolder.text=(TextView)view.findViewById(R.id.name);
        viewHolder.image=(ImageView)view.findViewById(R.id.picture);

        viewHolder.image.setImageResource(icons[arg0]);

        }else{
            view=(View)arg1;
        }
        final ViewFlipper  flipper = (ViewFlipper)view.findViewById(R.id.my_view_flipper);

         flipper.setOnClickListener(new View.OnClickListener() {

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


                AnimationFactory.flipTransition(flipper, FlipDirection.LEFT_RIGHT,300);
                Animation animation=flipper.getInAnimation();

                animation.setAnimationListener(new AnimationListener() {


                    public void onAnimationStart(Animation animation) {
                        // TODO Auto-generated method stub
                        flipper.setEnabled(false);
                    }


                    public void onAnimationRepeat(Animation animation) {
                        // TODO Auto-generated method stub


                    }


                    public void onAnimationEnd(Animation animation) {
                        // TODO Auto-generated method stub
                        counter++;
                    hashMap.put(""+counter, v);
                        flipper.setEnabled(true);

                        Log.i("counter", ""+counter);
                AnimationFactory.flipTransition(flipper, FlipDirection.RIGHT_LEFT, 250);

                    }

                });
            }
            });
        return view;
    }

    public class ViewHolder{
        private TextView text;
        private ImageView image;

    }
}
公共类MyGridViewAdapter扩展了BaseAdapter{
int[]图标;
语境;
整数计数器;
视图=空;
网格视图网格;
HashMap;
公共MyGridViewAdapter(int[]图标、上下文上下文、GridView网格){
//TODO自动生成的构造函数存根
图标=图标;
this.context=context;
这个.grid=grid;
}
@凌驾
public int getCount(){
//TODO自动生成的方法存根
返回图标长度;
}
@凌驾
公共对象getItem(int arg0){
//TODO自动生成的方法存根
返回图标[arg0];
}
@凌驾
公共长getItemId(int arg0){
//TODO自动生成的方法存根
返回0;
}
@凌驾
公共视图getView(最终int arg0、最终视图arg1、视图组arg2){
//TODO自动生成的方法存根
hashMap=新的hashMap();
LayoutInflater LayoutInflater=(LayoutInflater)context.getSystemService(context.LAYOUT\u INFLATER\u SERVICE);
最终ViewHolder ViewHolder=新的ViewHolder();
如果(arg1==null){
视图=新视图(上下文);
视图=布局展开器。充气(R.layout.view\u翻转器,空);
viewHolder.text=(TextView)view.findViewById(R.id.name);
viewHolder.image=(ImageView)view.findViewById(R.id.picture);
viewHolder.image.setImageResource(图标[arg0]);
}否则{
视图=(视图)arg1;
}
final ViewFlipper flipper=(ViewFlipper)view.findViewById(R.id.my_view_flipper);
flipper.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(最终视图v){
//TODO自动生成的方法存根
AnimationFactory.flipTransition(flipper,FlipDirection.LEFT\u RIGHT,300);
动画=flipper.getInAnimation();
setAnimationListener(新的AnimationListener(){
onAnimationStart上的公共无效(动画){
//TODO自动生成的方法存根
flipper.setEnabled(错误);
}
onAnimationRepeat上的公共无效(动画){
//TODO自动生成的方法存根
}
onAnimationEnd上的公共无效(动画){
//TODO自动生成的方法存根
计数器++;
hashMap.put(“+”计数器,v);
flipper.setEnabled(真);
Log.i(“计数器”,“计数器+计数器”);
AnimationFactory.flipTransition(flipper,FlipDirection.RIGHT\u LEFT,250);
}
});
}
});
返回视图;
}
公共类视图持有者{
私有文本查看文本;
私有图像查看图像;
}
}

我不明白你的意思。对不起。这是用于编辑您的问题的注释,而不是针对您的问题。单击某个项目时,我将view对象存储在hasmap中,单击该项目时,我会增加计数器,如果计数器%2==0,我将获得hashmap的第一个对象,用于调用上一个项目的performclick,但我会得到空指针异常