1

在我的活动中,我得到了应该在幻灯片中显示的图像列表,

现在应该显示的图像列表的来源来自 JSON,所以我解析了 json 并从 Appfolder/app_content 中获取了我需要显示的图像列表

我有课:

主要活动:

  public class MainActivity extends Activity {

        ArrayList<String> imageSlideList = new ArrayList<String>();

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);

             //Get Intent- Extra
        Intent intent = getIntent();
            String swpImgSImgs = intent.getStringExtra("swpImgS");

         try {
             JSONArray array = new JSONArray(swpImgSImgs);
             for (int i = 0 ; i< array.length(); i++){
                String imageList = array.getString(i);
                FileOperation fo= new FileOperation();
                File   dir=fo.createFileManagerInsidePackage(AppContext.getAppContext());
                String imagePath = dir+"/"+imageList;
                imageSlideList.add(imagePath);
             }
         } catch (JSONException e) {
             e.printStackTrace();
         }  
            ViewPager viewPager = (ViewPager) findViewById(R.id.view_pager);
            ImageAdapter adapter = new ImageAdapter(this);
            viewPager.setAdapter(adapter);


        }

        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            return false;
        }

    }

适配器:

    public class SwipingImageSlidesAdapter extends PagerAdapter {



        Context context;

//I need to use files that are in json 
        private int[] GalImages = new int[] {
            R.drawable.camera,
            R.drawable.camera
        };

        SwipingImageSlidesAdapter(Context context){
            this.context=context;
        }
        @Override
        public int getCount() {
            return GalImages.length;
        }

        @Override
        public boolean isViewFromObject(View view, Object object) {
            return view == ((ImageView) object);
        }

        @Override
        public Object instantiateItem(ViewGroup container, int position) {
            ImageView imageView = new ImageView(context);
            int padding = context.getResources().getDimensionPixelSize(R.dimen.activity_horizontal_margin);
            imageView.setPadding(padding, padding, padding, padding);
            imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
            imageView.setImageResource(GalImages[position]);
            ((ViewPager) container).addView(imageView, 0);
            return imageView;
        }

        @Override
        public void destroyItem(ViewGroup container, int position, Object object) {
            ((ViewPager) container).removeView((ImageView) object);
        }
    }

现在我必须做哪些更改才能显示来自应用程序文件夹(App/app_content)的图像,而不是使用我imageSlideList在 MainActivity 中创建的 ArrayList 使用 R.id.imageName?

4

3 回答 3

1

将路径列表传递给适配器的构造函数。

     ImageAdapter adapter = new ImageAdapter(this,imageSlideList)

然后在适配器

      ArrayList<String> mList;
      SwipingImageSlidesAdapter(Context context,ArrayList<String> list){
        this.context=context;
        mList = list; 
    } 

然后在 getView

        Bitmap b = BitmapFactory.decodeFile(mlist.get(position));
        imageView.setImageBitmap(b);

public static Bitmap decodeFile (String pathName)

将文件路径解码为位图。如果指定的文件名为空,或者无法解码为位图,则该函数返回空。

参数

pathName 要解码的文件的完整路径名。

退货

生成的解码位图,如果无法解码,则返回 null。

于 2013-07-03T05:09:07.263 回答
1

您可以像这样从 aarraylist 获取图像

imageView.setImageResource((int)aimageSlideList.get(position));

在适配器类中传递数组列表

private ArrayList<String> aimageSlideList=null;
private LayoutInflater mInflater=null;


    public SwipingImageSlidesAdapter (Activity context,ArrayList<String> aimageSlideList) {
        super(context, 0);

        mInflater = context.getLayoutInflater();
        this.aimageSlideList=aimageSlideList;
        }
于 2013-07-03T04:54:56.140 回答
0
  1. 只需使用 getter Setter Of Bitmap/Drawable 创建新类。

  2. 现在在 MainActivity 中设置您的图像 Bitmap/Drawable。

  3. 在您的 Adapter 类中,按位置获取该图像。

于 2013-07-03T05:05:59.887 回答