Как получить имя файла показано в toast.maketext - PullRequest
0 голосов
/ 20 июня 2011

Я провел несколько экспериментов с галереей, чтобы узнать, как ее использовать, и мне нужно понять, как я могу получить имя файла, отображаемое в Toast.maketext, вместо номера позиции, которую я пытался использовать getString, но эмулятор останавливается после загрузкиприложение.Вот мой код, может быть, кто-то получил ту же проблему и может предложить мне новый способ получить часть файла после R.drawable.

открытый класс DisplayViewsExample extends Activity {
// --изображения для отображения --- Integer [] 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};

@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 Ответ

1 голос
/ 20 июня 2011

Ресурсы класс имеет методы: 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();
}
...