Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.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 向gridview动态添加复杂对象_Android_Arrays_Gridview_Add_Dynamically Generated - Fatal编程技术网

Android 向gridview动态添加复杂对象

Android 向gridview动态添加复杂对象,android,arrays,gridview,add,dynamically-generated,Android,Arrays,Gridview,Add,Dynamically Generated,我正在学习自定义适配器,我了解其原理:创建列表,填写数据,连接适配器-显示列表。我知道如果列表由字符串组成,如何添加新字符串。 如果我使用由带字符串的图像组成的GridView,请告诉我如何添加新项目(一个新图像和一个新字符串)。 在Google中,所有示例要么不添加复杂项(只有一个字符串),要么不动态添加 upd:我会举例说明我需要什么。代码创建一个项目列表,或者简单地将项目放置在布局中,然后在运行的程序中,用户单击其中一个对象,并在活动的另一部分中创建具有相同内容的对象(最好使用创建前可以编

我正在学习自定义适配器,我了解其原理:创建列表,填写数据,连接适配器-显示列表。我知道如果列表由字符串组成,如何添加新字符串。 如果我使用由带字符串的图像组成的GridView,请告诉我如何添加新项目(一个新图像和一个新字符串)。 在Google中,所有示例要么不添加复杂项(只有一个字符串),要么不动态添加


upd:我会举例说明我需要什么。代码创建一个项目列表,或者简单地将项目放置在布局中,然后在运行的程序中,用户单击其中一个对象,并在活动的另一部分中创建具有相同内容的对象(最好使用创建前可以编辑的内容)。还是我错了,需要使用布局中的结构?与gridview相比,代码在视觉上很困难,性能也会降低,listview

您试图在这里实现的是一个listfragment,我希望我能在这里提供帮助:

1:创建一个包含列表项的
list\u item.xml
文件(例如,
ImageView
TextView
),这将表示列表/网格中的单个项

2:创建一个表示项目的模型类

class Image{
   Bitmap imageBitmap;
   String title;
}
3:将模型作为列表传递给适配器

4:在适配器中的
getView()方法中:

  • list\u item.xml充气
  • findViewById()
    用于列表中的每个视图\u item.xml
像这样:
(TextView)View.findViewById(android.R.id.TextView))
.setText(getItem(位置);
  • getItem(position)
    部件将使用您传递给模型的列表中的数据填充视图
  • 适配器的最终外观如下所示:

    public class MyAdapter extends BaseAdapter {
        List<Image> images =new ArrayList<>();
        Context c;
    
        //constructor
        public MyAdapter(List<Image> images, Context c) {
            this.images.addAll(images);
            this.c = c;
        }
    
    
        @Override
        public Object getItem(int i) {
            return images.get(i);
        }
    
        @Override
          public View getView(int position, View convertView, ViewGroup container) {
              if (convertView == null) {
                  convertView = getLayoutInflater().inflate(R.layout.list_item, container, false);
              }
    
              ((TextView) convertView.findViewById(android.R.id.textView))
                      .setText(getItem(position).getTitle());
    
              ((ImageView) convertView.findViewById(android.R.id.imageView))
                      .setImageBitmap(getItem(position).getImageBitmap());
    
              return convertView;
          }
    
    }
    
    公共类MyAdapter扩展了BaseAdapter{
    列表图像=新的ArrayList();
    上下文c;
    //建造师
    公共MyAdapter(列表图像,上下文c){
    this.images.addAll(images);
    这个.c=c;
    }
    @凌驾
    公共对象getItem(int i){
    返回图像。获取(i);
    }
    @凌驾
    公共视图getView(int位置、视图转换视图、视图组容器){
    if(convertView==null){
    convertView=GetLayoutFlater()。充气(R.layout.list_项,容器,false);
    }
    ((TextView)convertView.findViewById(android.R.id.TextView))
    .setText(getItem(position).getTitle());
    ((ImageView)convertView.findViewById(android.R.id.ImageView))
    .setImageBitmap(getItem(position).getImageBitmap());
    返回视图;
    }
    }
    
    听起来您需要一个表示每个数据项(图像+字符串值)的视图(XML)。看看google iosched应用程序,它是一个既有文本又有图像的适配器的好例子。如果我正确理解了你的答案,我解释了最初的问题-这只是从预先创建的列表中动态添加对象结构。更准确地说,预录数据到新列表的传输是不变的。例如le:在代码中创建了行/图像列表,然后在运行的应用程序中,该列表被传输到listview。抱歉,在我们开始长时间的对话以了解彼此之前,我建议您对
    listview
    及其工作方式进行更多的研究。我知道第一次使用listview可能会很困难,但是你会明白的。互联网上有很多例子和文档。我写的适配器也是一个非常基本的例子,祝你好运。