0

画像を分割してグリッド ビューに配置しています。グリッド ビューで 2 つの画像をクリックすると、それらの位置を入れ替えたいと思います。位置を変えることはできますが、イメージは変わりません。画像を分割してグリッド ビューに配置するためにビットマップ配列を使用しました。では、2 つの画像をクリックしてグリッド ビューの画像を変更するにはどうすればよいでしょうか。画像の入れ替えはどうすればいいですか?どのように私を助けることができますか?

public class Imagepieces extends Activity {
            ArrayList<Bitmap> breakedimages,duplicate;
            GridView g;
            int i=0,temp,temp2,rpos;

            @Override

            protected void onCreate(Bundle savedInstanceState) {
                // TODO Auto-generated method stub
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_image);
                breakedimages = getIntent().getParcelableArrayListExtra("breaked image");
                duplicate = new ArrayList<Bitmap>(breakedimages);
                Collections.shuffle(duplicate);
                g = (GridView) findViewById(R.id.gridView1);
                g.setAdapter(new CutAdapter(this, breakedimages));
                g.setNumColumns((int) Math.sqrt(breakedimages.size()));
                g.setOnItemClickListener(new OnItemClickListener() {

                    @Override
                    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                            long arg3) {                
                        // TODO Auto-generated method stub
                        //=================================================
                        {






                    }
                });
            }

            class CutAdapter extends BaseAdapter {
                int iwidth, iheight; 
                Context context;

                public CutAdapter(Imagepieces ipieces, ArrayList<Bitmap> breakedimages) {
                    // TODO Auto-generated constructor stub
                    iwidth = breakedimages.get(0).getWidth();
                    iheight = breakedimages.get(0).getHeight();
                    context = ipieces;
                }

                @Override
                public int getCount() {
                    // TODO Auto-generated method stub
                    return duplicate.size();
                }

                @Override
                public Object getItem(int arg0) {
                    // TODO Auto-generated method stub
                    return duplicate.get(arg0);
                }

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

                @Override
                public View getView(int arg0, View arg1, ViewGroup arg2) {
                    // TODO Auto-generated method stub
                    ImageView i=new ImageView(context);

                    i.setLayoutParams(new GridView.LayoutParams(iwidth +5,iheight +5));
                    i.setPadding(0, 0, 0, 0);
                    i.setImageBitmap(duplicate.get(arg0));

                    return i;
                }

            }
        }

グリッド ビューで画像を入れ替える方法は? 最初のクリックでグリッド ビューをクリックすると、位置を取得し、2 番目の位置をクリックする必要があります。次に、2 つの位置に画像を配置し、すべての画像を変更した後、両方が等しい場合に分割された画像と比較したいと考えています。次に、ゲームが終了したときにトーストを表示したいと思います。誰でも私を助けることができます

4

1 に答える 1

0

ではGridView、アイテムを変更したい場合は、Adapterにリンクする を変更するだけですGridView

たとえば、2 つのアイテムを入れ替えます:(GridAdapter は ArrayAdapter を拡張します)

GridAdapter adapter = (GridAdapter)gridv.getAdapter();
String firstItem = adapter.getItem(firstPosition);
String secondItem = adapter.getItem(secondPosition);
adapter.remove(firstItem);
adapter.insert(firstItem, secondPosition);
adapter.remove(secondItem);
adapter.insert(secondItem, firstPosition);

Adapterをオーバーライドすることで、カスタム内の他のものを変更することもできますgetView()

于 2012-10-01T05:14:29.033 に答える