Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用自定义ArrayAdapter的GridView_Android_Android Arrayadapter_Baseadapter_Android Gridview - Fatal编程技术网

Android 使用自定义ArrayAdapter的GridView

Android 使用自定义ArrayAdapter的GridView,android,android-arrayadapter,baseadapter,android-gridview,Android,Android Arrayadapter,Baseadapter,Android Gridview,也许只是出于好奇,我问错了问题。我通过扩展阵列适配器来创建自定义适配器。现在我想在GridView中显示它。我阅读了很多文章,发现他们只使用基本适配器来显示GridView。请告诉我这背后的逻辑是什么?我们可以用阵列适配器代替基本适配器吗?是的,我们可以ArrayAdpter本身从BaseAdapter扩展而来。也许这会把事情弄清楚 事实上,如果您只是想在ListView或GridView中显示一些不需要任何复杂自定义适配器的内容,那么使用ArrayAdapter就更容易了。它只是一个由任意对象

也许只是出于好奇,我问错了问题。我通过扩展阵列适配器来创建自定义适配器。现在我想在GridView中显示它。我阅读了很多文章,发现他们只使用基本适配器来显示GridView。请告诉我这背后的逻辑是什么?我们可以用阵列适配器代替基本适配器吗?

是的,我们可以
ArrayAdpter
本身从
BaseAdapter
扩展而来。也许这会把事情弄清楚


事实上,如果您只是想在
ListView
GridView
中显示一些不需要任何复杂自定义适配器的内容,那么使用
ArrayAdapter
就更容易了。它只是一个由任意对象数组支持的适配器

您当然可以在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);
gridView=(gridView)findViewById(R.id.gridView1);
ArrayAdapter=新的ArrayAdapter(这是android.R.layout.simple\u list\u item\u 1,数字);
setAdapter(适配器);

公共类GridAdapter扩展了ArrayAdapter实现了OnItemClickListener
{
上下文c;
int[]img;
字符串[]p;
公共GridAdapter(上下文上下文,int[]img1,字符串[]s1){
super(context,R.layout.forgridmain,R.id.textViewgd1,s1);
img=img1;
c=上下文;
p=s1;
}
公共视图getView(int位置、视图转换视图、视图组父视图)
{
布局充气机=(布局充气机)c.getSystemService(布局充气机服务);
ConvertView=充气机。充气(R.layout.forgridmain,父级,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(透明色);
iv1.setImageURI(Uri.parse(“android.resource://“+getPackageName()+”/drawable/“+img[position]);
tv.setText(p[位置]);
gv.setOnItemClickListener(ga);
返回视图;
}
@凌驾
公共链接(AdapterView arg0、视图arg1、内部arg2、,
长arg3){
Intent trans=新的Intent(MainActivity.this,Listed.class);
trans.putExtra(“第一”,p[arg2]);
星触觉(trans);
}
}
我使用它在网格视图中添加图像和文本。
grid view展开的布局包含一个imageView和一个textView。

我的疑问是,我是否会使用扩展阵列适配器的自定义适配器,因此仅在布局文件中,我必须从ListView更改为GridView。我说得对吗?您可以对
GridView
ListView
使用相同的适配器。因此,是的,您只需要更改布局以及调用的位置
setAdapter()
。但是是否可以使用
ArrayAdapter
将照片加载到
GridView
?您给出的代码使用了一个
simple\u list\u item\u 1
,这是一个
TextView
布局。我正试图找到一种使用
ArrayAdapter
的方法,但可以上载图像,而不上载文本。您可以使用自定义适配器此博客解释hanks,但该博客仅涵盖
GridView
中的简单文本
String
。图像是另一回事,正如我所了解的,您需要一个模型,并且要将图像更改为
位图
,等等:(
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);
        }


    }