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