Android 从适配器返回动态指定数量的映像
我使用一个带有GridView的自定义ImageAdapter来显示一组4*4的图像。 我希望能够动态传递适配器返回的图像数量,到目前为止,我看到的教程/问题都基于预设的图像数量,例如,仅返回前30个图像。我不知道如何实现一个方法,该方法接受一个int并从数组中返回那么多图像。任何帮助都将不胜感激。非常感谢 这就是我到目前为止将所有图像返回到网格视图的方法 图像适配器Android 从适配器返回动态指定数量的映像,android,arrays,image,gridview,baseadapter,Android,Arrays,Image,Gridview,Baseadapter,我使用一个带有GridView的自定义ImageAdapter来显示一组4*4的图像。 我希望能够动态传递适配器返回的图像数量,到目前为止,我看到的教程/问题都基于预设的图像数量,例如,仅返回前30个图像。我不知道如何实现一个方法,该方法接受一个int并从数组中返回那么多图像。任何帮助都将不胜感激。非常感谢 这就是我到目前为止将所有图像返回到网格视图的方法 图像适配器 import android.content.Context; import android.view.View; import
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
public class ImageAdapter extends BaseAdapter{
private Context mContext;
// Keep all Images in array
public Integer[] mMona = {
R.drawable.joconde_1_1, R.drawable.joconde_1_2, R.drawable.joconde_1_3,R.drawable.joconde_1_4,
R.drawable.joconde_2_1, R.drawable.joconde_2_2, R.drawable.joconde_2_3,R.drawable.joconde_2_4,
R.drawable.joconde_3_1, R.drawable.joconde_3_2, R.drawable.joconde_3_3,R.drawable.joconde_3_4,
R.drawable.joconde_4_1, R.drawable.joconde_4_2, R.drawable.joconde_4_3,R.drawable.joconde_4_4,
};
public ImageAdapter(Context c){
mContext = c;
}
@Override
public int getCount() {
return mMona.length;
}
@Override
public Object getItem(int position) {
return mMona[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(mMona[position]);
return imageView;
}
}
活动课
ImageAdapter imageAdapter = new ImageAdapter(this);
gridView.setAdapter(imageAdapter);
可以将int数组作为图像适配器的参数。该数组在图像数组中具有所需的图像位置,请创建要返回的临时数组或图像。我还没有测试过,但我认为我应该工作。 更改的代码在这里
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
public class ImageAdapter extends BaseAdapter{
private Context mContext;
Integer []retuning;
// Keep all Images in array
public Integer[] mMona = {
R.drawable.joconde_1_1, R.drawable.joconde_1_2, R.drawable.joconde_1_3,R.drawable.joconde_1_4,
R.drawable.joconde_2_1, R.drawable.joconde_2_2, R.drawable.joconde_2_3,R.drawable.joconde_2_4,
R.drawable.joconde_3_1, R.drawable.joconde_3_2, R.drawable.joconde_3_3,R.drawable.joconde_3_4,
R.drawable.joconde_4_1, R.drawable.joconde_4_2, R.drawable.joconde_4_3,R.drawable.joconde_4_4,
};
public ImageAdapter(Context c, int ...pos){
mContext = c;
//Added this line...
retuning= new Integer[pos.length];
for(int i=0;i<pos.length;i++){
if(i<mMona.length-1){
retuning[i]=mMona[pos[i]];
}
}
}
@Override
public int getCount() {
return retuning.length;
}
@Override
public Object getItem(int position) {
return retuning[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(mMona[position]);
return imageView;
}
}
嘿,感谢您的回复,尝试了这段代码,但它在这行retuning[i]=mMona[pos[i]]上抛出了NullPointerException;哦很抱歉实际上我没有初始化代码中的
重新调整数组,现在我已经编辑了这段代码,您可以再试一次。
int []img={0,2,3,5};
ImageAdapter imageAdapter = new ImageAdapter(this,img);
gridView.setAdapter(imageAdapter);