2014-12-08 57 views
0

我正在嘗試在片段中創建圖片庫,但其工作不正常。當我運行該應用程序時,它在我的emulater中顯示白色屏幕,但在logcat中沒有錯誤。我使用本教程參考tutorial。這是我的代碼Fragment中的圖片庫不能正常工作(Android)

public View onCreateView(LayoutInflater inflater, ViewGroup container, AttributeSet attrs, Bundle savedInstanceState) { 

    final View rootView = inflater.inflate(R.layout.imagegallery, container, false); 



    Gallery gallery = (Gallery) rootView.findViewById(R.id.gallery1); 
    gallery.setAdapter(new ImageAdapter(getActivity())); 
    gallery.setOnItemClickListener(new OnItemClickListener() { 
     public void onItemClick(AdapterView <? > parent, View v, int position, long id) { 
      Toast.makeText(rootView.getContext(), "pic" + (position + 1) + " selected", 
       Toast.LENGTH_SHORT).show(); 
      // display the images selected 
      ImageView imageView = (ImageView) rootView.findViewById(R.id.image1); 
      imageView.setImageResource(imageIDs[position]); 
     } 
    }); 
    return rootView; 
} 

public class ImageAdapter extends BaseAdapter { 
    private Context context; 
    private int itemBackground; 
    public ImageAdapter(Activity activity) { 
      // sets a grey background; wraps around the images 
      TypedArray a = getActivity().obtainStyledAttributes(R.styleable.MyGallery); 
      itemBackground = a.getResourceId(R.styleable.MyGallery_android_galleryItemBackground, 0); 
      a.recycle(); 
     } 
     // returns the number of images 
    public int getCount() { 
      return imageIDs.length; 
     } 
     // returns the ID of an item 
    public Object getItem(int position) { 
      return position; 
     } 
     // returns the ID of an item 
    public long getItemId(int position) { 
      return position; 
     } 
     // returns an ImageView view 
    public View getView(int position, View convertView, ViewGroup parent) { 
     ImageView imageView = new ImageView(context); 
     imageView.setImageResource(imageIDs[position]); 
     imageView.setLayoutParams(new Gallery.LayoutParams(100, 100)); 
     imageView.setBackgroundResource(itemBackground); 
     return imageView; 

    } 


} 


} 

什麼,我做錯了什麼?

回答

1

你應該return rootView;FragmentonCreateView(...)

return rootView; 

,並刪除

super.onInflate(attrs, savedInstanceState); 

,改變

gallery.setAdapter(new ImageAdapter(this)); 

gallery.setAdapter(new ImageAdapter(getActivity()); 
+0

謝謝你的回覆。但它不工作 – 2014-12-08 07:38:29

+0

@VibinRejiY有什麼問題? – 2014-12-08 07:38:50

+0

我不知道它顯示的空白screen.i認爲它的小錯誤 – 2014-12-08 07:42:15

0

嘗試此

public class HomeFragment extends Fragment { 

public HomeFragment(){} 
private Gallery gallery; 
private ListView listview; 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 

    View rootView = inflater.inflate(R.layout.fragment_home, container, false); 
    gallery = (Gallery) rootView.findViewById(R.id.gallery1); 
    listview = (ListView) rootView.findViewById(R.id.listView1); 
    gallery.setAdapter(new GalleryViewAdapter(getActivity())); 
    String values[] ={"item1","item2","item1","item2"}; 
    ArrayList<String> listValue = new ArrayList<String>(); 
    for(int i=0;i<values.length;i++){ 
     listValue.add(values[i]); 
    } 
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), 
      android.R.layout.simple_list_item_1, values); 
    listview.setAdapter(adapter); 
    Animation anim = AnimationUtils.loadAnimation(getActivity(), R.anim.fly_in_from_center1); 
    gallery.setAnimation(anim); 
    anim.start(); 

    gallery.setOnItemClickListener(new OnItemClickListener() { 

     @Override 
     public void onItemClick(AdapterView<?> parent, View view, 
       int position, long id) { 
      //view.setBackgroundResource(R.drawable.list_item_bg_pressed); 
      Animation vanish =AnimationUtils.loadAnimation(getActivity(),R.anim.vanish); 
      view.startAnimation(vanish); 

      Log.i("pos :: ","pos :: "+position); 
      //Toast.makeText(gridView.getContext(), "pos :: "+position, Toast.LENGTH_SHORT).show(); 
     } 
    }); 
    return rootView; 
    } 
} 

這是適配器

public class GalleryViewAdapter extends BaseAdapter { 

private Context context; 
public GalleryViewAdapter(Context c) { 
    context = c; 
} 

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

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

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

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    View v; 

     if (convertView == null) { 
     v = LayoutInflater.from(context).inflate(R.layout.row,null); 
     v.setLayoutParams(new Gallery.LayoutParams(250,250)); 
     } 
     else { 
     v = convertView; 
     } 
     ImageView imageview = (ImageView)v.findViewById(R.id.row_img); 
     TextView txtview = (TextView)v.findViewById(R.id.row_title); 
     txtview.setText("Hello"+position); 
     imageview.setScaleType(ImageView.ScaleType.FIT_CENTER); 
     imageview.setPadding(6, 6, 6, 6); 
     return v; 
    } 

} 
0

getActivity()正在pageadapter的內部。

GalleryAdapter pageAdapter = new GalleryAdapter(getActivity(), proName, proImage); 

ViewPager pager = (ViewPager)getView().findViewById(R.id.galery); 

pager.setAdapter(pageAdapter);