android中具有多个getView的CustomAdapter

android中具有多个getView的CustomAdapter,android,android-view,android-adapter,Android,Android View,Android Adapter,我有一个活动,其中我显示媒体文件列表,即视频、音频、图像和动画。单击列表项(从现在起为图像)时,“活动”必须在网格视图中显示本地资源文件夹中的所有图像。为此,我使用一个适配器,并在getView()函数中有一个开关盒。根据构造函数中设置的选项,将执行切换情况。对于ListView显示,它可以正常工作,但我无法在grid View中显示图像列表。任何帮助都将受到感谢。提前谢谢。这是我的密码: package com.bookshelf; import java.io.File;

我有一个活动,其中我显示媒体文件列表,即视频、音频、图像和动画。单击列表项(从现在起为图像)时,“活动”必须在网格视图中显示本地资源文件夹中的所有图像。为此,我使用一个适配器,并在getView()函数中有一个开关盒。根据构造函数中设置的选项,将执行切换情况。对于ListView显示,它可以正常工作,但我无法在grid View中显示图像列表。任何帮助都将受到感谢。提前谢谢。这是我的密码:

    package com.bookshelf;
    import java.io.File;
    import java.io.FilenameFilter;
    import java.io.IOException;
    import java.util.ArrayList;
    import android.app.Activity;
    import android.app.AlertDialog;
    import android.content.Context;
    import android.content.DialogInterface;
    import android.content.DialogInterface.OnClickListener;
    import android.content.res.AssetManager;
    import android.graphics.Bitmap;
    import android.graphics.BitmapFactory;
    import android.media.ThumbnailUtils;
    import android.os.Bundle;
    import android.provider.MediaStore;
    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.GridView;
    import android.widget.ImageView;
    import android.widget.ListAdapter;
    import android.widget.ListView;
    import android.widget.TextView;
    import android.widget.Toast;
    public class MediaGalaryListActivity extends Activity implements
    OnItemClickListener {

private ArrayList<String> mGalary = new ArrayList<String>();
private Bitmap mBitArray[];
private Gallery mMediaGallery;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.mediagalary);
    mGalary.add("Videos");
    mGalary.add("Audios");
    mGalary.add("Images");
    mGalary.add("Animation");
    ListView lv = (ListView) findViewById(R.id.mediaGal);
    mMediaGallery = (Gallery) findViewById(R.id.mediaGallery);

    lv.setAdapter(new MediaGalaryAdapter(this, mGalary, 1));
    lv.setOnItemClickListener(this);
}

class MediaGalaryAdapter extends BaseAdapter {

    private ArrayList<String> mGal = new ArrayList<String>();
    private Bitmap[] mImgArray;
    private Context context;
    private LayoutInflater mInflate;
    private int mAdapterOpt;

    public MediaGalaryAdapter(Context ctx, ArrayList<String> gal,
            int adapOpt) {
        context = ctx;
        mGal = gal;
        mAdapterOpt = adapOpt;
        mInflate = (LayoutInflater) context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }

    public MediaGalaryAdapter(Context ctx, Bitmap[] imgArray, int adapOpt) {
        context = ctx;
        mImgArray = imgArray;
        mInflate = (LayoutInflater) context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        mAdapterOpt = adapOpt;
    }

    public int getCount() {
        int size = 0;
        switch (mAdapterOpt) {
        case 1:
            size = mGal.size();
            break;
        case 2:
            size = mImgArray.length;
            break;
        }
        return size;
    }

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

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

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

        switch (mAdapterOpt) {
        case 1:
            convertView = mInflate.inflate(R.layout.medialayout, null);
            TextView tv = (TextView) convertView.findViewById(R.id.text);

            tv.setText(mGal.get(position));
            break;
        case 2:
            ImageView imgView;

            convertView = mInflate.inflate(R.layout.image_gallery, null);

            imgView = new ImageView(context);
            imgView.setImageBitmap(mImgArray[position]);
            imgView.setScaleType(ImageView.ScaleType.CENTER_CROP);

            imgView.setLayoutParams(new GridView.LayoutParams(100, 100));
            imgView.setPadding(8, 8, 8, 8);


            break;
        }

        return convertView;
    }
}

// For filtering the filename with extensions
class FileNamFilter implements FilenameFilter {
    private String mFileExtn;

    public FileNamFilter(String extn) {
        mFileExtn = "." + extn;
    }

    public boolean accept(File dir, String filename) {
        return filename.endsWith(mFileExtn);
    }
}

public void onItemClick(AdapterView<?> parent, View view, int pos, long id) {
    String mediaType = mGalary.get(pos);


    String list[] = null;
    AssetManager assetManager = getAssets();
    try {
        list = assetManager.list("Immersive");
        mBitArray = new Bitmap[list.length];

        System.out.println("Length of list ="+list.length);


        for (int i = 0, idx = 0; i < list.length; i++) 
        {

            if (list[i].endsWith(".png") || list[i].endsWith(".gif")
                    || list[i].endsWith(".jpeg")
                    || list[i].endsWith(".jpg"))
            {
                mBitArray[idx++] = BitmapFactory.decodeStream(assetManager
                        .open("Immersive/" + list[i]));
                System.out.println("Image at position "+i+" is "+list[i]);
            }
            ;

        }
        mMediaGallery
                .setAdapter(new MediaGalaryAdapter(this, mBitArray, 2));
    } catch (IOException e) {
        e.printStackTrace();
    }



    AlertDialog.Builder build = new AlertDialog.Builder(this);
    build.setTitle("InProgress....");
    // build.setIcon(android.R.drawable.)
    build.setMessage(mediaType + " is Inprogress...");
    build.setPositiveButton("Ok", new OnClickListener() {
        public void onClick(DialogInterface dialog, int which) {
            // finish();
        }
    });
    AlertDialog alert = build.create();
    alert.show();
    // Toast.makeText(getApplicationContext(), mediaType, 30).show();
}

class MediaGalary {
    private ImageView mImage;
    private TextView mName;

    public MediaGalary(ImageView img, TextView strName) {
        mImage = img;
        mName = strName;
    }

    public ImageView getmImage() {
        return mImage;
    }

    public void setmImage(ImageView mImage) {
        this.mImage = mImage;
    }

    public TextView getmName() {
        return mName;
    }

    public void setmName(TextView mName) {
        this.mName = mName;
    }
}
package.com.bookshelf;
导入java.io.File;
导入java.io.FilenameFilter;
导入java.io.IOException;
导入java.util.ArrayList;
导入android.app.Activity;
导入android.app.AlertDialog;
导入android.content.Context;
导入android.content.DialogInterface;
导入android.content.DialogInterface.OnClickListener;
导入android.content.res.AssetManager;
导入android.graphics.Bitmap;
导入android.graphics.BitmapFactory;
导入android.media.ThumbnailUtils;
导入android.os.Bundle;
导入android.provider.MediaStore;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.AdapterView;
导入android.widget.AdapterView.OnItemClickListener;
导入android.widget.BaseAdapter;
导入android.widget.Gallery;
导入android.widget.GridView;
导入android.widget.ImageView;
导入android.widget.ListAdapter;
导入android.widget.ListView;
导入android.widget.TextView;
导入android.widget.Toast;
公共类MediaGalaryListActivity扩展了活动实现
麦克利克监听器{
private ArrayList mGalary=new ArrayList();
私有位图mBitArray[];
私人画廊;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.mediagalary);
mGalary.add(“视频”);
mGalary.add(“音频”);
mGalary.添加(“图像”);
mGalary.add(“动画”);
ListView lv=(ListView)findViewById(R.id.mediaGal);
mMediaGallery=(多媒体资料)findViewById(R.id.mediaGallery);
lv.setAdapter(新的MediaGalaryAdapter(本,mGalary,1));
lv.setOnItemClickListener(本);
}
类MediaGalaryAdapter扩展了BaseAdapter{
private ArrayList mGal=new ArrayList();
私有位图[]MIMG数组;
私人语境;
私人公寓;
马达普特私人酒店;
公共MediaGalaryAdapter(上下文ctx、ArrayList gal、,
int ADAPPT){
上下文=ctx;
mGal=gal;
mAdapterOpt=adapOpt;
mInflate=(LayoutInflater)上下文
.getSystemService(上下文布局\充气机\服务);
}
公共MediaGalaryAdapter(上下文ctx,位图[]imgArray,int adapOpt){
上下文=ctx;
mImgArray=imgaray;
mInflate=(LayoutInflater)上下文
.getSystemService(上下文布局\充气机\服务);
mAdapterOpt=adapOpt;
}
public int getCount(){
int size=0;
开关(mAdapterOpt){
案例1:
大小=mGal.size();
打破
案例2:
size=mImgArray.length;
打破
}
返回大小;
}
公共对象getItem(int位置){
返回null;
}
公共长getItemId(int位置){
返回0;
}
公共视图getView(int位置、视图转换视图、视图组父视图){
开关(mAdapterOpt){
案例1:
convertView=mInflate.inflate(R.layout.medialayout,null);
TextView tv=(TextView)convertView.findViewById(R.id.text);
tv.setText(mGal.get(position));
打破
案例2:
ImageView-imgView;
convertView=mInflate.充气(R.layout.image_gallery,空);
imgView=新图像视图(上下文);
imgView.setImageBitmap(mImgArray[position]);
imgView.setScaleType(ImageView.ScaleType.CENTER\U裁剪);
imgView.setLayoutParams(新的GridView.LayoutParams(100100));
imgView.setPadding(8,8,8,8);
打破
}
返回视图;
}
}
//用于筛选具有扩展名的文件名
类FileNamFilter实现FilenameFilter{
私有字符串mfilextn;
公共文件名筛选器(字符串extn){
mFileExtn=“.”+extn;
}
公共布尔接受(文件目录,字符串文件名){
返回filename.endsWith(mfilextn);
}
}
public void onItemClick(AdapterView父项、视图、整数位置、长id){
字符串mediaType=mGalary.get(pos);
字符串列表[]=null;
AssetManager AssetManager=getAssets();
试一试{
list=assetManager.list(“沉浸式”);
mBitArray=新位图[list.length];
System.out.println(“列表长度=”+list.Length);
for(inti=0,idx=0;i