Получение itemid из списка‹string›

я работаю над приложением для обоев, я реализовал этот код, чтобы загружать свои изображения из активов загрузка-изображений-из-папки-ресурсов

он отлично работает, но у меня проблема с получением идентификатора элемента из списка, чтобы использовать идентификатор для отображения одного из этих изображений в полноэкранном режиме или установки обоев

public long getItemId(int position) {

    return position ;
}

вот мой код

public class ImageAdapter extends BaseAdapter{
 private Context mContext;
private List<String> list;
private AssetManager assetManager;

public ImageAdapter(Context c, List<String> list) {
    mContext = c;
   this.list = list;

}

public int getCount() {

    return list.size();
}

public Object getItem(int position) {

    return position;
}

public long getItemId(int position) {

    return position;
}

public View getView(int position, View view, ViewGroup parent) {
    ImageView imageView = new ImageView(mContext);

    try {

        InputStream is = mContext.getAssets().open(list.get(position));
        Bitmap bm = BitmapFactory.decodeStream(is);
        imageView.setImageBitmap(bm);
        imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
        imageView.setLayoutParams(new GridView.LayoutParams(80, 80));
    } catch (IOException e) {

        e.printStackTrace();
    }
    // TODO Auto-generated method stub
    return imageView;
}



public class Gs3Wallpaper extends Activity {
private  ImageButton Gs3Button;


@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    GridView gridView = (GridView) findViewById(R.id.GridView1);
    try {
        gridView.setAdapter(new ImageAdapter(this ,getImage()));
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    public List<String> getImage()throws IOException {
    AssetManager assetManager = getAssets();
    String[] files = assetManager.list("gallary");
    List<String> list = new ArrayList<String>();
    for (String it : files) {
        list.add("gallary"+File.separator + it);        

    }
    return list;

я не знаю, как получить идентификатор из списка, который я пытался использовать list.get(position), но он возвращает строку, а не int, поэтому я не могу передать это, например, в setImageResource

какие-либо предложения?


person Joseph27    schedule 23.02.2013    source источник
comment
Одно предложение, расскажите нам, в чем проблема получить идентификатор, который у вас есть   -  person codeMagic    schedule 23.02.2013
comment
я не знаю, как получить идентификатор из списка, который я пытался использовать list.get(position), но он возвращает строку, а не int   -  person Joseph27    schedule 23.02.2013
comment
Вы пытались использовать onListeItemClick(ListView l, View v, int position, long id), а затем v.getId()?   -  person codeMagic    schedule 23.02.2013
comment
Я пробовал много решений, но ни одно из них не сработало. Я все еще не могу получить определенное изображение через идентификатор или позицию. Может ли кто-нибудь предложить что-нибудь, пожалуйста?   -  person Joseph27    schedule 26.02.2013


Ответы (1)


Что вы можете сделать, так это установить изображение или путь к изображению, в зависимости от того, как вы это делаете, в HashMap в getView() при установке элемента списка. Используйте position для key и изображение как value

public class MyClass
{
    HashMap<String, Bitmap> imageMap = new HashMap<String, Bitmap>();
...

затем установите его в своем getView()

public View getView(int position, View view, ViewGroup parent) {
ImageView imageView = new ImageView(mContext);

try {

    InputStream is = mContext.getAssets().open(list.get(position));
    Bitmap bm = BitmapFactory.decodeStream(is);
    imageView.setImageBitmap(bm);
    imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
    imageView.setLayoutParams(new GridView.LayoutParams(80, 80));

    String posString = String.valueOf(position);
    imageMap.put(posString, bm);
} catch (IOException e) {
....
}

Что-то вроде этого должно сработать для вас. Затем просто используйте позицию, чтобы получить это растровое изображение из HashMap

person codeMagic    schedule 26.02.2013