как динамически отобразить одно изображение с SDCard - PullRequest
1 голос
/ 08 июля 2011

Я сделал программу для отображения всех изображений из sdcard динамически. Но теперь я хочу отображать одно изображение динамически из sdcard вместо отображения всех изображений. моя кодировка выглядит следующим образом

public class Gallery1Activity extends Activity {
// private ArrayList<String> imglist;


/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {

    ArrayList arr = new ArrayList();
    super.onCreate(savedInstanceState);
    setContentView(R.layout.gallerygrid);

    GridView gv1=(GridView) this.findViewById(R.id.gridView1);
    //gv1.setAdapter(new galleryImageAdapter(this));

    arr = galldatabase();
    gv1.setAdapter(new galleryImageAdapter(this,arr));

}

private ArrayList galldatabase() {
    // TODO Auto-generated method stub
    ArrayList ThumbsIDList = new ArrayList();
    //Uri u=MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI;

    /*String[] projection =new String[]{
        Images.Thumbnails._ID,
        Images.Thumbnails.DATA,
        Images.Thumbnails.IMAGE_ID};*/

    Cursor galleryimagecursor=managedQuery(MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI,new String[]{
            Images.Thumbnails._ID,

            Images.Thumbnails.DATA} , null, null, null);

    if(galleryimagecursor!=null&&galleryimagecursor.moveToFirst()){


        String thumbsID;
        String thumbsImageID;
        String thumbsData;



         int num=0;

        do{


            thumbsID=galleryimagecursor.getString(galleryimagecursor.getColumnIndexOrThrow(Images.Thumbnails._ID));
            thumbsData=galleryimagecursor.getString(galleryimagecursor.getColumnIndexOrThrow(Images.Thumbnails.DATA));

            Log.i("BMP","size "+thumbsID+" "+thumbsData);  


            num++;

            /*if(thumbsImageID!= null) {*/
                ThumbsIDList.add(thumbsID);
                /*ThumbsImageIDList.add(galleryimagecursor.getString(thumbsImageIDcol));
                ThumbsDataList.add(galleryimagecursor.getString(thumbsDataCol));
        }*/



        }
        while(galleryimagecursor.moveToNext());


    }
    return ThumbsIDList;

}

}

тогда код адаптера следует

public class galleryImageAdapter extends BaseAdapter {

Context con;
private ArrayList<String> imgList;

private String thumbsID;
public galleryImageAdapter(Context c,ArrayList arr){
    con=c;
    imgList = arr;
}

@Override
public int getCount() {
    // TODO Auto-generated method stub
    return imgList.size();
}

@Override
public Object getItem(int position) {
    // TODO Auto-generated method stub
    return null;
}

@Override
public long getItemId(int position) {
    // TODO Auto-generated method stub
    return position;
}



@Override
public View getView(int position, View convertView, ViewGroup parent) {
    // TODO Auto-generated method stub

    View v;

    if( convertView==null){

        LayoutInflater li;
        li = (LayoutInflater)con.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        v=li.inflate(R.layout.galleryadapter,null);

        final ImageView iv1=(ImageView)v.findViewById(R.id.galimage);
        TextView tv1=(TextView)v.findViewById(R.id.galimagtext);
        tv1.setText("Image"+position);
        Log.d("imagevalue",imgList.get(position));



        iv1.setImageURI(Uri.withAppendedPath(MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI, ""+imgList.get(position)/*galleryimagecursor.getColumnIndexOrThrow(Images.Thumbnails._ID)*//*imgList.get(position)*/)); 




    }
    else 
        v=convertView;

    return v;
}

}

1 Ответ

0 голосов
/ 08 июля 2011

у вас есть массив изображений с большим пальцем изображений, используя arr = galldatabase(); создайте еще один массив списков (newarr), который будет иметь только 1 элемент. если вы хотите показать второе изображение, просто скопируйте идентификатор большого пальца этого изображения из arr arr и сохраните его в новом списке массивов

пример

ArrayList newarr = new ArrayList();
newarr.add(arr.get(random position));

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

использование

gv1.setAdapter(new galleryImageAdapter(this,newarr));
...