2014-03-06 83 views
0

在我的android應用程序中,如何在同一個GridViewon button click事件中顯示不同的圖標。我必須繼續在按鈕點擊的GridView中的兩組圖標之間交換。我所做的是I have made two activities each with a button and different set of icons in a GridView並繼續在按鈕點擊之間切換這些活動。但是,有沒有更好的方法,在相同的活動,我可以更改點擊按鈕上的gridview元素?謝謝。在Android活動中填充不同的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中的兩組圖標之間切換。

回答

0

在你的GridView的適配器,您可以創建一個改變的看法圖標,例如方法:

private boolean imageSetChange = false; 

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

然後在你的getView()方法,您可以切換取決於imageSetChanged價值的項目。

+0

我在調用changeImages()時在按鈕onclick監聽器中收到空指針異常。 – user2011302

+0

請發佈代碼 – Makerhack

+0

查看編輯的問題。 – user2011302

相關問題