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