2012-10-01 2 views
0

이미지를 분할하고 격자보기로 배치 중입니다. 격자보기에서 두 개의 이미지를 클릭 할 때, 나는 그들의 위치를 ​​교환하고 싶다. 나는 위치를 바꿀 수 있지만 이미지는 변하지 않습니다. 비트 맵 배열을 사용하여 이미지를 분할하고 격자보기로 배치했습니다. 그러면 두 개의 이미지를 클릭하여 그리드보기에서 이미지를 어떻게 변경합니까? 이미지 교환은 어떻게해야합니까? 어느 누구가 나를 도울 수 있습니까?안드로이드에서 위치가 바뀌면서 그리드보기에서 이미지를 변경하는 방법은 무엇입니까?

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을 변경하면됩니다.

예를 들어

는 두 개의 항목을 교환 : (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

관련 문제