0

グリッド ビューで画像を交換する必要があるアプリケーションを作成しています。ここにコードがあります...どうすればスワッピングを達成できますか:

アクティビティ

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;
}

 }

画像に触れると乾杯し、指を離すとあきらめます。しかし、画像を交換する方法がわかりませんでした。

4

3 に答える 3

1

スワッピングの適切な方法は、アダプターで行われる場合があります。独自のベース アダプターを作成するか、他のアダプターから継承し、アクティビティから呼び出されるスワイプのメソッドを含めます。このメソッド内で、正常にスワップするために必要な変更を実行できます。最終的に、 Collections.swapを使用して配列内の項目を交換できるようになります。

*ソースの準備ができたら、必要に応じてコンポーネントを更新することを忘れないでください ( notifyDatasetChanged )

于 2012-08-12T20:00:51.207 に答える
1

OnItemClicklistener を使用して、2 つの異なる画像に触れてそれらを交換することをお勧めします。このような:

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;
        }
    }
});

最初の画像が選択されたときに強調表示するなどの機能を追加する必要がありますが、これが基本的なアプローチです。

ドラッグアンドドロップが必要な場合は、さらに多くの作業が必要になります...

于 2012-08-12T19:48:15.237 に答える
0

https://github.com/thquinn/DraggableGridView

これが解決策です。あなたの条件に一致するかもしれません。見てみな

于 2012-12-12T08:41:53.037 に答える