2011-06-19 51 views
0

我做了一些實驗與圖庫瞭解如何使用它,我需要了解如何可以得到由Toast.maketext顯示的文件名,而不是位置編號I試圖使用getString,但加載應用程序後模擬器停止。 這裏是我的代碼,也許有人得到同樣的問題,並可以建議我一種新的方式來獲取文件的一部分後,R.drawable。如何獲取文件名顯示在toast.maketext

公共類DisplayViewsExample延伸活動 {
// ---來顯示圖像--- 整數[] imageIDs = { R.drawable.slovenia, R.drawable.peru, ř .drawable.canarie, R.drawable.lanzarote, R.drawable.casasco, R.drawable.avid, R.drawable.danimarca, R.drawable.eritrea };

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

    Gallery gallery = (Gallery) findViewById(R.id.gallery1); 

    gallery.setAdapter(new ImageAdapter(this));   
    gallery.setOnItemClickListener(new OnItemClickListener() 
    { 
     public void onItemClick(AdapterView parent, 
     View v, int position, long id) 
     {    

      //---display the images selected--- 
      ImageView imageView = (ImageView) findViewById(R.id.image1);     
      imageView.setImageResource(imageIDs[position]); 

      Toast.makeText(getBaseContext(), 
        "pic" + (position + 1) + " selected", 
        Toast.LENGTH_SHORT).show(); 

     } 
    }); 
} 

public class ImageAdapter extends BaseAdapter 
{ 
    private Context context; 
    private int itemBackground; 

    public ImageAdapter(Context c) 
    { 
     context = c; 
     //---setting the style--- 
     TypedArray a = obtainStyledAttributes(R.styleable.Gallery1); 
     itemBackground = a.getResourceId(
      R.styleable.Gallery1_android_galleryItemBackground, 0); 
     a.recycle();      
    } 

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

    //---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) { 
     ImageView imageView = new ImageView(context); 
     imageView.setImageResource(imageIDs[position]); 
     imageView.setScaleType(ImageView.ScaleType.FIT_XY); 
     imageView.setLayoutParams(new Gallery.LayoutParams(120, 150)); 
     imageView.setBackgroundResource(itemBackground); 
     return imageView; 
    } 
}  

}

謝謝 安傑洛

回答

1

Resources類有方法:public String getResourceEntryName (int resid)public String getResourceName (int resid)從中你可以從RESOURCEID獲取種源的名稱。

public void onItemClick(AdapterView parent, View v, int position, long id) {    
     //---display the images selected--- 
     ImageView imageView = (ImageView) findViewById(R.id.image1);     
     imageView.setImageResource(imageIDs[position]); 

     Toast.makeText(getBaseContext(), 
       "pic: " + getBaseContext().getResources().getResourceEntryName(imageIDs[position]) + " selected", 
       Toast.LENGTH_SHORT).show(); 
} 
+0

非常感謝,我不知道這樣的方法。我成功地得到了結果,爲圖庫中顯示的圖片編寫另一個String []數組。當然,按照確切的順序設置名稱以匹配圖片位置會更加複雜,但我可以通過這種方式爲每張圖片添加一個完整的標題。我會記下你的建議,並將它保存在我的下一部作品中。我非常感謝你的幫助。 – wocmultimedia