2014-03-06 2 views
0

내 안드로이드 응용 프로그램에서 동일한 GridViewon button click 이벤트에 다른 아이콘을 표시하는 방법은 무엇입니까? 버튼 클릭시 내 gridview에서 두 세트의 아이콘 사이를 교환해야합니다. 내가 한 것은 I have made two activities each with a button and different set of icons in a GridView이며 버튼 클릭시 해당 활동을 계속 전환합니다. 그러나 동일한 액티비티에서 버튼 클릭시 gridview 요소를 변경할 수있는 더 나은 접근법이 있습니까? 감사.버튼 클릭시 안드로이드 활동에 다른 gridview 요소 채우기

편집 어떻게 든 다음 코드에 의해 ViewSwitcher를 사용하여이 일을하고 :

JavaActivity 코드 :

public class TestActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_test); 

     GridView EngGrid,UrduGrid; 
     final ViewSwitcher switcher; 
     Button Next, Previous; 



      EngGrid=(GridView) findViewById(R.id.gridView1); 
      EngGrid.setAdapter(new EngAdapter(this)); 
      EngGrid.setOnItemClickListener(new OnItemClickListener(){ 

       @Override 
       public void onItemClick(AdapterView<?> arg0, View view, int position, 
          long id) { 
        // TODO Auto-generated method stub 
        // Toast.makeText(MenuActivity.this, "" + position, Toast.LENGTH_SHORT).show(); 
        Intent i = new Intent(getApplicationContext(), DisplayActivity.class); 
        i.putExtra("menu_id", position); 
        startActivity(i); 

       } 
     }); 


      UrduGrid=(GridView) findViewById(R.id.gridView2); 
      UrduGrid.setAdapter(new UrduAdapter(this)); 
      UrduGrid.setOnItemClickListener(new OnItemClickListener(){ 

       @Override 
       public void onItemClick(AdapterView<?> arg0, View view, int position, 
          long id) { 
        // TODO Auto-generated method stub 
        // Toast.makeText(MenuActivity.this, "" + position, Toast.LENGTH_SHORT).show(); 
        Intent i = new Intent(getApplicationContext(), DisplayActivity.class); 
        i.putExtra("menu_id", position); 
        startActivity(i); 

       } 
     }); 

      switcher = (ViewSwitcher) findViewById(R.id.ViewSwitcher); 
      Next = (Button) findViewById(R.id.button2); 
       Previous = (Button) findViewById(R.id.button1); 

       Next.setOnClickListener(new View.OnClickListener() { 

       public void onClick(View v) { 
        // TODO Auto-generated method stub 

        new AnimationUtils(); 
        switcher.setAnimation(AnimationUtils.makeInAnimation 
         (getBaseContext(), true)); 
        switcher.showNext(); 
       } 
      }); 

       Previous.setOnClickListener(new View.OnClickListener() { 

       public void onClick(View v) { 
        // TODO Auto-generated method stub 

        new AnimationUtils(); 
        switcher.setAnimation(AnimationUtils.makeInAnimation 
         (getBaseContext(), true)); 
        switcher.showPrevious(); 
       } 
      }); 
      } 





    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.activity_test, menu); 
     return true; 
    } 


public class UrduAdapter extends BaseAdapter{ 

     public Integer[] mThumbIds = { 
        R.drawable.urdu_dua1, R.drawable.urdu_dua2, 
        R.drawable.urdu_dua3, R.drawable.urdu_dua4, 
        R.drawable.urdu_dua5, R.drawable.urdu_dua6, 
        R.drawable.urdu_dua7, R.drawable.urdu_dua8, 
        R.drawable.urdu_dua9, R.drawable.urdu_dua10, 
        R.drawable.urdu_dua11, R.drawable.urdu_dua12, 
        R.drawable.urdu_dua13, R.drawable.urdu_dua14, 
        R.drawable.urdu_dua15, R.drawable.urdu_dua16, 
        R.drawable.urdu_dua17, R.drawable.urdu_dua18, 
        R.drawable.urdu_dua19, R.drawable.urdu_dua20, 
        R.drawable.urdu_dua21 

     }; 

     private Context mContext; 

     public UrduAdapter(Context c){ 
      mContext = c; 
     } 

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

     @Override 
     public Object getItem(int position) { 
      // TODO Auto-generated method stub 
      return mThumbIds[position]; 
     } 

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

     @Override 
     public View getView(int position, View convertView, ViewGroup parent) { 
      // TODO Auto-generated method stub 
      View MyView; 
      if(convertView == null){ 

       LayoutInflater li=((Activity) mContext).getLayoutInflater(); 
       MyView =li.inflate(R.layout.urdumenuitem, parent,false); 

       } 
       else{ 
        MyView =(View)convertView; 
       } 
      ImageView iv=(ImageView)MyView.findViewById(R.id.image1); 
      iv.setImageResource(mThumbIds[position]); 
        return MyView; 
      } 

    } 


public class EngAdapter extends BaseAdapter{ 

    public Integer[] mThumbIds = { 
      R.drawable.eng_pic1, R.drawable.eng_pic2, 
      R.drawable.eng_pic3, R.drawable.eng_pic4, 
      R.drawable.eng_pic5, R.drawable.eng_pic6, 
      R.drawable.eng_pic7, R.drawable.eng_pic8, 
      R.drawable.eng_pic9, R.drawable.eng_pic10, 
      R.drawable.eng_pic11, R.drawable.eng_pic12, 
      R.drawable.eng_pic13, R.drawable.eng_pic14, 
      R.drawable.eng_pic15, R.drawable.eng_pic16, 
      R.drawable.eng_pic17, R.drawable.eng_pic18, 
      R.drawable.eng_pic19, R.drawable.eng_pic20, 
      R.drawable.eng_pic21 
      }; 
    private Context mContext; 

    public EngAdapter(Context c){ 
     mContext = c; 
    } 

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

    @Override 
    public Object getItem(int position) { 
     // TODO Auto-generated method stub 
     return mThumbIds[position]; 
    } 

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

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     // TODO Auto-generated method stub 
     View MyView; 
     if(convertView == null){ 

      LayoutInflater li=((Activity) mContext).getLayoutInflater(); 
      MyView =li.inflate(R.layout.urdumenuitem, parent,false); 

      } 
      else{ 
       MyView =(View)convertView; 
      } 
     ImageView iv=(ImageView)MyView.findViewById(R.id.image1); 
     iv.setImageResource(mThumbIds[position]); 
       return MyView; 
     } 

} 

} 

XML_layout :

<ViewSwitcher xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/ViewSwitcher" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 

    <RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="#E0EEE0" 
    > 

    <GridView 

     android:id="@+id/gridView1" 
     android:layout_below="@+id/button1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:numColumns="2" 
     android:horizontalSpacing="5dp" 
     android:layout_margin="10dp" 
     android:stretchMode="columnWidth" 
     android:gravity="center_vertical" 
     /> 

    <Button 
     android:id="@+id/button1" 
     style="?android:attr/buttonStyleSmall" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignLeft="@+id/gridView1" 
     android:layout_alignParentTop="true" 
     android:layout_marginTop="15dp" 
     android:background="@drawable/settings" 
     android:focusable="true" /> 

</RelativeLayout> 


    <RelativeLayout 

    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="#E0EEE0" 
    > 

    <GridView 

     android:id="@+id/gridView2" 
     android:layout_below="@+id/button2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:numColumns="2" 
     android:horizontalSpacing="5dp" 
     android:layout_margin="10dp" 
     android:stretchMode="columnWidth" 
     android:gravity="center_vertical" 
     /> 

    <Button 
     android:id="@+id/button2" 
     style="?android:attr/buttonStyleSmall" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignLeft="@+id/gridView2" 
     android:layout_alignParentTop="true" 
     android:layout_marginTop="15dp" 
     android:background="@drawable/settings" 
     android:focusable="true" /> 

</RelativeLayout> 


</ViewSwitcher> 

질문은 여전히 ​​어떻게 남아 우리는 버튼 클릭시 동일한 GridView에서 두 세트의 아이콘 사이를 전환합니다.

당신의 getView() 메소드에서 다음
private boolean imageSetChange = false; 

public void changeImages(boolean change){ 
    this.imageSetChange = change; 
    notifyDataSetChanged(); 
} 

, 당신은 imageSetChanged의 값에 따라 항목을 전환 : 당신의 GridView의 어댑터에서

답변

0

, 당신은 예를 들어, 뷰의 아이콘을 변경하는 방법을 만들 수 있습니다 .

+0

changeImages()를 호출 할 때 버튼 onclick 수신기에서 null 포인터 예외가 발생합니다. – user2011302

+0

코드를 게시하십시오 – Makerhack

+0

수정 된 질문보기 – user2011302

관련 문제