2013-03-28 16 views
0

我想在我的應用程序中創建一個圖片庫,我目前將此作爲網格視圖,然後通過ImageAdapter傳遞到完整圖像視圖。如何使用網格視圖中的片段?

問題是我想能夠點擊從網格視圖後點擊圖片之間。

有人提到我可能會使用片段來做到這一點,但我是新的android開發。

有人可以請進一步解釋如何做到這一點。由於

我的代碼是:

public class Marble extends Activity{ 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.marble); 

GridView gridView = (GridView) findViewById(R.id.gridview1); 

     // Instance of ImageAdapter Class 
     gridView.setAdapter(new ImageAdapter1(this)); 

     /** 
     * On Click event for Single Gridview Item 
     * */ 
     gridView.setOnItemClickListener(new OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View v, 
        int position, long id) { 

       // Sending image id to FullScreenActivity 
       Intent i = new Intent(getApplicationContext(), FullImageActivity1.class); 
       // passing array index 
       i.putExtra("id", position); 
       startActivity(i); 
      } 
     }); 

    } 
} 

然後

public class FullImageActivity1 extends Activity { 


    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.full_image); 

     // get intent data 
     Intent i = getIntent(); 

     // Selected image id 
     int position = i.getExtras().getInt("id"); 
     ImageAdapter1 imageAdapter1 = new ImageAdapter1(this); 

     ImageView imageView = (ImageView) findViewById(R.id.fullimage); 
     imageView.setImageResource(imageAdapter1.mThumbIds[position]); 
     imageView.setScaleType(ImageView.ScaleType.FIT_XY); 
    } 
} 

最後:

public class ImageAdapter1 extends BaseAdapter { 
    private Context mContext; 

    // Keep all Images in array 
    Integer[] mThumbIds = { 
      R.drawable.arabescato, R.drawable.biancocarrara, 
      R.drawable.botticinoclassico, R.drawable.calacattaoro, 
      R.drawable.cremamarfil, R.drawable.cremavalencia, 
      R.drawable.emperadordark, R.drawable.jurabeige, 
      R.drawable.neromarquina, R.drawable.perlatoolympo, 
      R.drawable.rojoalicante 

    }; 

    // Constructor 
    public ImageAdapter1(Context c){ 
     mContext = c; 
    } 

    @Override 
    public int getCount() { 
     return mThumbIds.length; 
    } 

    @Override 
    public Object getItem(int position) { 
     return mThumbIds[position]; 
    } 

    @Override 
    public long getItemId(int position) { 
     return 0; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) {   
     ImageView imageView = new ImageView(mContext); 
     imageView.setImageResource(mThumbIds[position]); 
     imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); 
     imageView.setLayoutParams(new GridView.LayoutParams(265, 265)); 
     return imageView; 
    } 

} 

回答

1

,而不是圖像視圖放視圖尋呼機在FullImageActivity1

this.mPagerfrimage = new pagerfrimage(getSupportFragmentManager(), 
       list of drawables here); 
     ViewPager vp_image = (ViewPager) findViewById(R.id.viewpager1); 
     vp_image.setAdapter(mPagerfrimage); 

這是尋呼機適配器CALSS

class pagerfrimage extends FragmentPagerAdapter { 
    List<Integer> la; 

    public pagerfrimage(FragmentManager fm, List<Integer> result) { 
     super(fm); 
     this.la = result; 
     // TODO Auto-generated constructor stub 
    } 

    @Override 
    public Fragment getItem(int arg0) { 
     // TODO Auto-generated method stub 
     fragmentforimage ffrFragmentforimage = new fragmentforimage(); 
     Bundle bundle = new Bundle(); 
     bundle.putInt("resourceid", la.get(arg0)); 
     bundle.putInt("number", arg0); 
     ffrFragmentforimage.setArguments(bundle); 
     return ffrFragmentforimage; 
    } 

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



} 

片段類

public class fragmentforimage extends Fragment { 
int number; 
int resourceid; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     resourceid=getArguments()!=null?getArguments().getInt("resourceid"):0; 
     number=getArguments()!=null?getArguments().getInt("number"):0; 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     View v=inflater.inflate(R.layout.yourlayot containing image view, container, false); 
     ImageView iv=(ImageView)v.findViewById(R.id.your imageviews id); 
     Drawable drawable=getResources().getDrawable(resourceid); 
      iv.setImageDrawable(drawable); 
      return v;} 

你可以通過當前選擇的圖像的ID,這樣你就可以表明,在第一次更改代碼根據自己的需要

+0

將圖像視圖放在這裏的位置:ImageView iv =(ImageView)v.findViewById(R.id.your imageviews id);我是否需要爲每張照片製作一個視圖?我有大約100! – David 2013-03-28 12:35:46

+0

不,你只需要創建一個單一的佈局與圖像視圖,這將每次充氣查看v = inflater.inflate(R.layout.yourlayot包含圖像視圖,容器,假);而這個佈局中的圖片視圖應該用 – 2013-03-28 12:37:28

+0

優秀,對不起真的很新!我做了這部分對嗎? this.mPagerfrimage =新pagerfrimage(getSupportFragmentManager(), \t \t \t \t R.drawable.arabescato,R.drawable.biancocarrara, \t R.drawable.botticinoclassico,R.drawable.calacattaoro, \t R.drawable.cremamarfil, R.drawable.cremavalencia, \t R.drawable.emperadordark,R.drawable.jurabeige, \t R.drawable.neromarquina,R.drawable.perlatoolympo, \t R.drawable.rojoalicante); ViewPager vp_image =(ViewPager)findViewById(R.id.fullimage); vp_image.setAdapter(mPagerfrimage); – David 2013-03-28 12:54:24