当android中的位置发生变化时,如何在网格视图中更改图像?

时间:2012-10-01 04:54:52

标签: android image gridview

我正在分割图像并放置在网格视图中。在网格视图中单击两个图像时,我想交换它们的位置。我能够改变他们的位置,但图像没有变化。我使用位图数组来分割图像并将它们放在网格视图中。那么如何通过单击两个图像来更改网格视图中的图像?我该如何进行图像交换?怎么会有人帮助我?

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

            }
        }

如何在网格视图中交换图像?当我在第一次点击时点击网格视图我必须得到位置,然后第二次点击第二个位置。然后我在两个位置的图像和更改所有图像后,我想要与已分割的图像进行比较,如果两者相等。然后我想在游戏结束时显示祝酒词。任何人都可以帮助我

1 个答案:

答案 0 :(得分:0)

GridView,当您想要更改项目时,您只需更改链接到Adapter的{​​{1}}即可。

例如,交换两个项目:(GridAdapter extends ArrayAdapter)

GridView

您还可以通过覆盖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中的其他内容。