我的代码有什么问题(Fragment中的Gallery)

时间:2014-10-26 20:40:26

标签: android android-fragments android-gallery

我是android新手.. 有人能告诉我我的代码有什么问题吗?我想在片段中制作画廊。当我在设备上安装apk文件时,该程序可以工作,但在那片段中,我看到的是白色屏幕,而不是图库。请帮助我:)

那是我的片段类

    package info.androidhive.fitnesslascalla;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.Gallery;
import android.widget.ImageView;
import android.widget.Toast;


public class ForUsFragment extends Fragment{

    public class MainActivity extends Activity 
    {

         ImageView selectedImage;  
         private Integer[] mImageIds = {
                    R.drawable.car1,
                    R.drawable.car2,
                    R.drawable.car3,
                    R.drawable.car4,
                    R.drawable.car5,
                    R.drawable.car6,
                    R.drawable.car7,
                    R.drawable.car8
            };
         public View onCreateView(LayoutInflater inflater, ViewGroup parent, 
                 Bundle saedInstanceState) {
             View rootView = inflater.inflate(R.layout.fragment_for_us, parent, false);



            //setContentView(R.layout.fragment_for_us);

                 Gallery gallery = (Gallery) findViewById(R.id.gallery1);
            selectedImage=(ImageView)findViewById(R.id.image1);
            gallery.setSpacing(1);
            gallery.setAdapter(new GalleryImageAdapter(this));

             // clicklistener for Gallery
            gallery.setOnItemClickListener(new OnItemClickListener() {
                public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
                    Toast.makeText(MainActivity.this, "Your selected position = " + position, Toast.LENGTH_SHORT).show();
                    // show the selected Image
                    selectedImage.setImageResource(mImageIds[position]);
                }
            });
            return rootView;
        }

    }

    public class GalleryImageAdapter extends BaseAdapter 
    {
        private Context mContext;

        private Integer[] mImageIds = {
                R.drawable.car1,
                R.drawable.car2,
                R.drawable.car3,
                R.drawable.car4,
                R.drawable.car5,
                R.drawable.car6,
                R.drawable.car7,
                R.drawable.car8
        };

        public GalleryImageAdapter(Context context) 
        {
            mContext = context;
        }

        public int getCount() {
            return mImageIds.length;
        }

        public Object getItem(int position) {
            return position;
        }

        public long getItemId(int position) {
            return position;
        }


        // Override this method according to your need
        public View getView(int index, View view, ViewGroup viewGroup) 
        {
            // TODO Auto-generated method stub
            ImageView i = new ImageView(mContext);

            i.setImageResource(mImageIds[index]);
            i.setLayoutParams(new Gallery.LayoutParams(200, 200));

            i.setScaleType(ImageView.ScaleType.FIT_XY);

            return i;
        }
    }
}    

,这是我对该片段的布局

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="{relativePackage}.${activityClass}"
    android:orientation="vertical" >

    <Gallery
        android:id="@+id/gallery1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />

    <ImageView
        android:id="@+id/image1"
        android:layout_width="215dp"
        android:layout_height="315dp"
        android:layout_gravity="center_horizontal"
        android:background="#cfcfcf"
        android:paddingTop="5dp"
        android:paddingBottom="5dp"
        android:paddingLeft="10dp"
        android:paddingRight="10dp"
        android:src="@drawable/car1"
        android:contentDescription="@null" />
</LinearLayout>

1 个答案:

答案 0 :(得分:0)

Getview mathod的问题

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

    if (convertView == null) {

        holder = new ViewHolder();

        imageView = new ImageView(this.context);

        imageView.setPadding(3, 3, 3, 3);

        convertView = imageView;

        holder.imageView = imageView;

        convertView.setTag(holder);

    } else {

        holder = (ViewHolder) convertView.getTag();
    }

    holder.imageView.setImageDrawable(plotsImages.get(position));

    holder.imageView.setScaleType(ImageView.ScaleType.FIT_XY);
    holder.imageView.setLayoutParams(new Gallery.LayoutParams(150, 90));

    return imageView;
}

private static class ViewHolder {
    ImageView imageView;
}