2011-06-19 19 views
0

ギャラリーでいくつかの実験を行い、使用方法を学びました。位置番号Iの代わりにToast.maketextによって示されたファイル名を取得する方法を理解する必要があります。 getStringを使用しようとしましたが、アプリケーションのロード後にエミュレータが停止します。 私のコードは誰かが同じ問題を抱えている可能性があり、R.drawableの後にファイルの一部を取得する新しい方法を提案することができます。toast.maketextに表示されたファイル名を取得する方法

パブリッククラスDisplayViewsExampleアクティビティ 延び{
// ---表示する画像--- 整数[] imageIDs = { R.drawable.slovenia、 R.drawable.peru、R .drawable.canarie、 R.drawable.lanzarote、 R.drawable.casasco、 R.drawable.avid、 R.drawable.danimarca、 R.drawable.eritrea}。あなたはRESOURCEIDからresouce名を取得することができ、そこからpublic String getResourceEntryName (int resid)public String getResourceName (int resid)

@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 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

関連する問題