2012-10-01 78 views
0

我正在拆分圖像並放置在網格視圖中。在網格視圖中點擊兩個圖像時,我想交換他們的位置。我能夠改變他們的立場,但形象沒有改變。我已經使用位圖數組分割圖像並將它們放置在網格視圖中。那麼,如何通過點擊兩張圖像在網格視圖中更改圖像?我應該如何交換圖像?任何人如何幫助我?如何更改網格視圖中的位置在android中的位置變化?

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

      } 
     } 

如何在網格視圖中交換圖像?當我點擊第一次點擊網格視圖時,我必須得到位置,然後點擊第二個位置。然後我在兩個位置上的圖像,並且在改變了所有圖像之後,如果兩者相等,我想與已經分割的圖像進行比較。然後我想在遊戲結束時顯示敬酒。任何人都可以幫我

+0

我回答了類似的問題。請檢查此http://stackoverflow.com/a/12669463/1443981 – Aswin

回答

0

GridView,當你想改變一個項目,你需要的只是改變Adapter你鏈接到GridView

例如,交換兩個項目:(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); 

您還可以通過覆蓋在getView()更改您的自定義Adapter其他的事情。

+0

我已提供完整的代碼請參閱編輯並幫助我們請 – user1705339