2011-06-19 26 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