也许我只是因为好奇而问错了问题。我通过扩展数组适配器来创建自定义适配器。现在我想在GridView中显示它。我已经阅读了很多文章,我发现它们只使用基本适配器来显示GridView。请大家告诉我这背后的逻辑是什么?我们可以使用Array适配器代替Base Adapter吗?
答案 0 :(得分:3)
是的,我们可以。 ArrayAdpter
本身来自BaseAdapter
。可能会清除http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.3_r2.1/android/widget/ArrayAdapter.java#ArrayAdapter
事实上,如果您只是想在ListView
或GridView
中展示一些不需要任何复杂自定义适配器的内容,那么更容易使用ArrayAdapter
。它只是一个由任意对象数组支持的适配器。
答案 1 :(得分:2)
您当然可以在GridView中使用ArrayAdapter。看到这段代码示例
gridView = (GridView) findViewById(R.id.gridView1);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, numbers);
gridView.setAdapter(adapter);
答案 2 :(得分:0)
public class GridAdapter extends ArrayAdapter implements OnItemClickListener
{
Context c;
int[] img;
String[] p;
public GridAdapter(Context context, int[] img1,String[] s1) {
super(context,R.layout.forgridmain,R.id.textViewgd1,s1);
img=img1;
c=context;
p=s1;
}
public View getView(int position,View ConvertView,ViewGroup parent)
{
LayoutInflater inflater=(LayoutInflater)c.getSystemService(LAYOUT_INFLATER_SERVICE);
ConvertView =inflater.inflate(R.layout.forgridmain, parent, false);
ImageView iv1=(ImageView) ConvertView.findViewById(R.id.imageView111);
TextView tv=(TextView)ConvertView.findViewById(R.id.textViewgd1);
RelativeLayout rl=(RelativeLayout)ConvertView.findViewById(R.id.relalypout);
rl.setBackgroundColor(Color.TRANSPARENT);
iv1.setImageURI(Uri.parse("android.resource://"+getPackageName()+"/drawable/"+img[position]));
tv.setText(p[position]);
gv.setOnItemClickListener(ga);
return ConvertView;
}
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
Intent trans=new Intent(MainActivity.this,Listed.class);
trans.putExtra("first",p[arg2]);
startActivity(trans);
}
}
我用它在网格视图中添加图像和文本。 网格视图膨胀的布局包含一个imageView和一个textView。