2013-07-03 47 views
1

在我的活動我理解的應該是在一個幻燈片顯示的圖像列表獲取圖像資源ID圖像,如何從字符串的ArrayList

現在來源爲應顯示圖像的列表來自JSON,所以我已經解析JSON並得到了,我需要從Appfolder/app_content顯示圖像的列表

我有類:

MainActivity:

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; 
     } 

    } 

阿達PTER:

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); 
     } 
    } 

現在有什麼變化我一定要使用我在MainActivity創建imageSlideList是ArrayList中顯示來自應用程序文件夾(應用程序/ app_content),而不是使用R.id.imageName圖像?

回答

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)

解碼的文件路徑成一個位圖。如果指定的文件名爲空,或者無法解碼爲位圖,則函數返回null。要解碼的文件

參數

pathName將完整的路徑名。

返回

得到的解碼位圖,或爲空,如果它不能被解碼。

+0

謝謝你的幫助:) – star18bit

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; 
     } 
+0

但是,我怎麼能將arraylist從活動傳遞到適配器? – star18bit

+0

通過SwipingImageSlidesAdapter的構造函數 –

+0

你能告訴我怎麼做嗎? – star18bit

0
  1. 剛剛創建的getter二傳手位圖/可繪製新的Class獲取圖像。

  2. 現在在MainActivity中設置圖像位圖/可繪製。

  3. 在您的Adapter類中,按位置獲取該圖像。