2012-08-12 50 views
0

我正在制作一个应用程序,我需要在网格视图中交换图像。这里是代码... 我怎么能实现交换:上触摸它给作为敬酒下来的图象并去除使用OnTouchListener在网格视图中交换图像

活动

public class GameActivity extends Activity 
    implements OnTouchListener 
{ 

    @Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    //Intent intent = getIntent(); 
    setContentView(R.layout.layout_game); 

    //create grid view 
    splitImage(); 
    GridView gridView = new GridView(this); 
    gridView = (GridView)findViewById(R.id.grid_view); 
    final ImageAdapter images = new ImageAdapter(this,chunkedImages); 
    final GridView gV = gridView; 
    gridView.setAdapter(images); 
    gridView.setOnTouchListener(this); 

} 

public boolean onTouch(View v, MotionEvent me) { 

    switch(me.getAction()) 
    { 

    case MotionEvent.ACTION_DOWN : 

     Toast.makeText(GameActivity.this, "down ", Toast.LENGTH_SHORT).show(); 
     break; 
    case MotionEvent.ACTION_UP : 

     Toast.makeText(GameActivity.this, "up " , Toast.LENGTH_SHORT).show(); 
     break; 
    case MotionEvent.ACTION_MOVE : 
     //Toast.makeText(GameActivity.this, "move", Toast.LENGTH_SHORT).show(); 
     break; 
    } 
    return true; 
} 

} 

的fingure放弃。但如何交换图像我无法理解。

+0

什么数据类型是'chunkedImages'? – Sam 2012-08-12 19:05:13

+0

位图的ArrayList – karan421 2012-08-12 19:15:26

+0

这里是一个现有的答案,可以帮助你: http://stackoverflow.com/questions/6201884/how-can-i-change-image-on-gridview-runtime?answertab=votes#tab -top – 2012-08-12 19:29:08

回答

1

我建议使用一个OnItemClicklistener来触摸两个不同的图像来交换它们。像这样:

private int firstPosition = -1; 
... 

gridView.setOnItemClickListener(new OnItemClickListener() { 
    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
     if(firstPosition < 0) 
      firstPosition = position; 
     else { 
      Bitmap swapImage = chunkedImages.get(position); 
      chunkedImages.set(position, chunkedImages.get(firstPosition)); 
      chunkedImages.set(firstPosition, swapImage); 
      firstPosition = -1; 
     } 
    } 
}); 

您应该添加像突出显示第一个图像时的功能,但是这是基本方法。

如果你想拖放,你是在大量的工作......

+0

我想将第一张图片拖动到第二张图片上,然后两个图片都被换成.../ – karan421 2012-08-12 19:50:36

+0

然后您需要阅读[本博客](http://blahti.wordpress.com/2011/10/03/) drag-drop-for-android-gridview /)或这个问题:http://stackoverflow.com/q/7146639/1267661 – Sam 2012-08-12 19:54:18

1

交换的正确的方法可能会在适配器完成。创建您自己的基础适配器或从其他任何基础适配器继承,并包含将从活动中调用的任何将被调用的方法。 在此方法中,您可以执行必要的更改以成功交换。最终,你将能够使用Collections.swap

希望它有助于 交换阵列中的项目*不要忘了更新组件当源准备就绪,如果需要的话(notifyDatasetChanged