GridView使用Custom ArrayAdapter

时间:2013-12-23 06:21:50

标签: android android-arrayadapter baseadapter android-gridview

也许我只是因为好奇而问错了问题。我通过扩展数组适配器来创建自定义适配器。现在我想在GridView中显示它。我已经阅读了很多文章,我发现它们只使用基本适配器来显示GridView。请大家告诉我这背后的逻辑是什么?我们可以使用Array适配器代替Base Adapter吗?

3 个答案:

答案 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

事实上,如果您只是想在ListViewGridView中展示一些不需要任何复杂自定义适配器的内容,那么更容易使用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);

for more detail

答案 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。