2011-04-23 35 views
5

請告訴我如何在android網格視圖教程中更改或應用具有不同文字的不同圖標。我的代碼是如何在android網格視圖教程中應用不同的圖標和不同的文字?

public class Home extends Activity 
{  
    //---the images to display--- 
    Integer[] imageIDs = { 

    }; 

    GridView grid_main; 

    @Override  
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     grid_main = (GridView) findViewById(R.id.gridview); 
     grid_main.setAdapter(new ImageAdapter(this)); 

     grid_main.setOnItemClickListener(new OnItemClickListener() 
     { 
      public void onItemClick(AdapterView<?> parent, 
      View v, int position, long id) 
      {     
       Toast.makeText(getBaseContext(), 
         "pic" + (position + 1) + " selected", 
         Toast.LENGTH_SHORT).show(); 
      } 
     }); 

    } 

    public class ImageAdapter extends BaseAdapter 
    { 
     Context mContext; 
     public static final int ACTIVITY_CREATE = 10; 
     public ImageAdapter(Context c) 
     { 
      mContext = c; 
     } 

     //---returns the number of images--- 
     public int getCount() { 
      return 12; 
     } 

     //---returns the ID of an item--- 
     public Object getItem(int position) { 
      return position; 
     } 

     public long getItemId(int position) { 
      return position; 
     } 

     //---returns an ImageView view--- 
     public View getView(int position, View convertView, ViewGroup parent) 
     { 

      View v; 
      if(convertView==null){ 
       LayoutInflater li = getLayoutInflater(); 
       v = li.inflate(R.layout.grid_item, null); 
       TextView tv = (TextView)v.findViewById(R.id.icon_text1); 
       tv.setText("Profile "+position); 
       ImageView iv = (ImageView)v.findViewById(R.id.icon_image1); 
       iv.setImageResource(R.drawable.bo_1); 

      } 
      else 
      { 
       v = convertView; 
      } 
      return v; 
     } 
    }  
} 

這段代碼完全運行,但所有圖片文字次相同,所以我需要去改變它。請告訴我該怎麼做? 任何幫助將不勝感激!

回答

0

兩個最重要的線是這四:

TextView tv = (TextView)v.findViewById(R.id.icon_text1); 
tv.setText("Profile "+position); 
ImageView iv = (ImageView)v.findViewById(R.id.icon_image1); 

if (position == 0) { 
    iv.setImageResource(R.drawable.bo_1); 
} else if (position == 1) { 
    iv.setImageResource(R.drawable.bo_2); 
} 

在你從XMLlayout文件TextView的第一線。之後,您將此TextView的文本設置爲「Profile」和一個數字。在第三行中初始化ImageView。之後,您在該ImageView中使用名爲bo1的圖像。所以你所要做的就是在第二行添加另一個文本,並在第四行改變你所指的圖像。

+0

不,這不是工作就像你建議的方式。通過實現您的邏輯,即在第二行添加另一個文本並更改第四行中的圖像引用,它將我所提及的getcount方法中所有12個圖標的圖像更改爲我引用它的圖像。其實我想要12個不同的文字12個不同的圖標,如果我再加上這四行,它增加了不。的圖標,如果我讓計數爲1,那麼它的罰款,但圖標垂直顯示,因爲在XML中的線性佈局。請幫助我這是如此迫切! – user641366 2011-04-23 16:30:08

+0

順便Thx幫助我! – user641366 2011-04-23 16:30:52

+0

啊,你不想只是改變圖像,但各種圖像...然後,我會添加一個switch語句,因爲我在我的答案中添加。 – 2011-04-23 16:32:05

0

嘗試使用下面的代碼

public View getView(int position, View convertView, ViewGroup parent) 
     { 

      View v; 
      ImageView iv = null; 
      TextView tv = null; 
      if(convertView==null){ 
       LayoutInflater li = getLayoutInflater(); 
       v = li.inflate(R.layout.grid_item, null); 
       tv = (TextView)v.findViewById(R.id.icon_text1); 
       tv.setText("Profile "+position); 
       iv = (ImageView)v.findViewById(R.id.icon_image1); 


      } 
      else 
      { 
       v = convertView; 
      } 
      iv.setImageResource(imageIDs[position]); 
      return v; 
     } 

感謝 迪帕克

2

很多,很多,很多的ImageAdapter更好的是:

public class ImageAdapter extends BaseAdapter { 
     private Context mContext; 

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

     public int getCount() { 
      return mThumbIds.length; 
     } 

     public Object getItem(int position) { 
      return null; 
     } 

     public long getItemId(int position) { 
      return 0; 
     } 

     // create a new ImageView for each item referenced by the Adapter 
     public View getView(int position, View convertView, ViewGroup parent) { 
      View v; 
      if (convertView == null) { // if it's not recycled, initialize some attributes 
       LayoutInflater li = getLayoutInflater(); 
       v = li.inflate(R.layout.grid_item, null); 
       TextView tv = (TextView)v.findViewById(R.id.icon_text); 
       tv.setText(mTextsIds[position]); 
       ImageView iv = (ImageView)v.findViewById(R.id.icon_image); 
       iv.setImageResource(mThumbIds[position]); 
      } else { 
       v = (View) convertView; 
      } 
      return v; 
     } 

     // references to our images 
     private Integer[] mThumbIds = { 
       R.drawable.image1, R.drawable.image2, 
       R.drawable.image3, R.drawable.image4 
     }; 

     // references to our texts 
     private String[] mTextsIds = { 
       "Text 1", "Text 2", "Text 3", "Text 4" 
     }; 
    } 

請注意,圖片和文字都變量mThumbIdsmTextsIds

的grid_item.xml是:

<?xml version="1.0" encoding="UTF-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/widget44" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" 
    android:layout_x="201px" 
    android:layout_y="165px" 
    android:gravity="center_horizontal" 
    > 

     <ImageView 
      android:id="@+id/icon_image" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
     /> 
     <TextView 
      android:id="@+id/icon_text" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="TextView" 
      android:gravity="center_horizontal" 
      android:textColorHighlight="#656565" 
     /> 
</LinearLayout> 
相關問題