activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".activity.MainActivity">
<GridView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/gridView"
android:numColumns="4"></GridView>
</LinearLayout>

Article.java

package com.pingyijinren.helloworld.model;

/**
* Created by Administrator on 2016/6/3 0003.
*/
public class Article {
private int imageId;
private String name; public Article(int imageId,String name){
this.imageId=imageId;
this.name=name;
} public int getImageId() {
return imageId;
} public String getName() {
return name;
}
}

grid_item.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"> <ImageView
android:layout_width="match_parent"
android:layout_height="50dp"
android:id="@+id/image"/> <TextView
android:layout_width="match_parent"
android:layout_height="20dp"
android:id="@+id/name"
android:gravity="center"/>
</LinearLayout>

ArticleAdapter.java

package com.pingyijinren.helloworld.adapter;

import android.content.Context;
import android.text.Layout;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView; import com.pingyijinren.helloworld.R;
import com.pingyijinren.helloworld.model.Article; import java.util.ArrayList;
import java.util.List; /**
* Created by Administrator on 2016/6/3 0003.
*/
public class ArticleAdapter extends ArrayAdapter<Article>{
private ArrayList<Article> arrayListArticle;
public ArticleAdapter(Context context, int resource, List<Article> objects) {
super(context, resource, objects);
arrayListArticle=(ArrayList<Article>) objects;
} @Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder;
if(convertView==null){
convertView= LayoutInflater.from(getContext()).inflate(R.layout.grid_item,null);
viewHolder=new ViewHolder();
viewHolder.image=(ImageView) convertView.findViewById(R.id.image);
viewHolder.name=(TextView)convertView.findViewById(R.id.name);
convertView.setTag(viewHolder);
}
else{
viewHolder=(ViewHolder) convertView.getTag();
} if(position<arrayListArticle.size()){
Article article=getItem(position);
viewHolder.image.setImageResource(article.getImageId());
viewHolder.name.setText(article.getName());
}
else{
viewHolder.image.setImageResource(R.drawable.plus);
viewHolder.name.setText("");
} return convertView;
} private class ViewHolder{
public ImageView image;
public TextView name;
} @Override
public int getCount() {
return arrayListArticle.size()+1;
}
}
package com.pingyijinren.helloworld.adapter; import android.content.Context;
import android.text.Layout;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView; import com.pingyijinren.helloworld.R;
import com.pingyijinren.helloworld.model.Article; import java.util.ArrayList;
import java.util.List; /**
* Created by Administrator on 2016/6/3 0003.
*/
public class ArticleAdapter extends ArrayAdapter<Article>{
private ArrayList<Article> arrayListArticle;
public ArticleAdapter(Context context, int resource, List<Article> objects) {
super(context, resource, objects);
arrayListArticle=(ArrayList<Article>) objects;
} @Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder;
if(convertView==null){
convertView= LayoutInflater.from(getContext()).inflate(R.layout.grid_item,null);
viewHolder=new ViewHolder();
viewHolder.image=(ImageView) convertView.findViewById(R.id.image);
viewHolder.name=(TextView)convertView.findViewById(R.id.name);
convertView.setTag(viewHolder);
}
else{
viewHolder=(ViewHolder) convertView.getTag();
} if(position<arrayListArticle.size()){
Article article=getItem(position);
viewHolder.image.setImageResource(article.getImageId());
viewHolder.name.setText(article.getName());
}
else{
viewHolder.image.setImageResource(R.drawable.plus);
viewHolder.name.setText("");
} return convertView;
} private class ViewHolder{
public ImageView image;
public TextView name;
} @Override
public int getCount() {
return arrayListArticle.size()+1;
}
}

MainActivity.java

package com.pingyijinren.helloworld.activity;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.GridView; import com.pingyijinren.helloworld.R;
import com.pingyijinren.helloworld.adapter.ArticleAdapter;
import com.pingyijinren.helloworld.model.Article; import java.util.ArrayList; public class MainActivity extends AppCompatActivity {
private GridView gridView;
private ArrayList<Article> arrayListArticle;
private ArticleAdapter articleAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); gridView=(GridView)findViewById(R.id.gridView);
arrayListArticle=new ArrayList<Article>();
arrayListArticle.add(new Article(R.drawable.first_image,"frist"));
arrayListArticle.add(new Article(R.drawable.second_image,"second"));
articleAdapter=new ArticleAdapter(MainActivity.this,R.layout.grid_item,arrayListArticle);
gridView.setAdapter(articleAdapter); gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if(position==arrayListArticle.size()){
arrayListArticle.add(new Article(R.drawable.third_image,"third"));
articleAdapter.notifyDataSetChanged();
}
}
});
}
}

GridView动态添加View的更多相关文章

  1. 动态添加布局、动态添加View、LinearLayout动态添加View;

    LinearLayout提供了几个方法,用作动态添加View特别好用: 可以添加View.删除View.删除指定位置View.删除全部View: 看代码: public class MainActiv ...

  2. 微信小程序之一:动态添加view(view包含picker,input)

    <view wx:for="{{array}}" wx:key="this" class="borderContainer"> ...

  3. WPF GridView动态添加项并读取数据

    假设数据库有如下表, 首先我们创建一个WPF工程,界面如下 <Window x:Class="WpfApplication2.MainWindow" xmlns=" ...

  4. asp.net gridview动态添加列,并获取其数据;

    1,绑定数据前先动态添加列,见方法CreateGridColumn(只在第一次加载动态添加): 2,gvlist_RowDataBound为对应列添加控件: 前台代码: <%@ Page Lan ...

  5. GridView动态添加列之后,导致PostBack(回发)页面数据丢失问题解决

    直入主题,首先声明,这个问题是无法解决的,特此在这说明 一.如何动态添加列,如下: 在页面重写OnInit事件,至于为什么要在这个事件写,根据页面的声明周期和经验可知(不用去别的地方找了,这个我找了之 ...

  6. Android 在程序中动态添加 View 布局或控件

    有时我们需要在程序中动态添加布局或控件等,下面用程序来展示一下相应的方法: 1.addView 添加View到布局容器 2.removeView 在布局容器中删掉已有的View 3.LayoutPar ...

  7. GridView 动态添加绑定列和模板列

    动态添加绑定列很简单:例如: GridView1.DataSourceID = "SqlDataSource1"; BoundField bf1 = new BoundField( ...

  8. Mono for android 如何动态添加View,线程内部如何更新UI.

    貌似所有设计到UI的程序原理都是一样的,子线程是不能够更新UI状态的,所以就必须使用UI自身或者第三方来更新UI. 如 在WinForm 中 就可以使用Control.Invoke(Action ac ...

  9. 往Layout中动态添加View

    需要注意几个方法:基本上所有的方法参数单位是px 1.设置View的宽高: LinearLayout.LayoutParams params = new LinearLayout().LayoutPa ...

随机推荐

  1. 用python编写九九乘法表

    for i in range(1,10): for j in range(1,10): if j >i: print(end='') else: print(j,'*',i,'=',i*j,en ...

  2. CPP-基础:C++拷贝构造函数详解

    一. 什么是拷贝构造函数 首先对于普通类型的对象来说,它们之间的复制是很简单的,例如: ; int b = a; 而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量.下面看一个类对象 ...

  3. 获得Java中System对应一些属性值

    public static void main(String[] args){ System.out.println("Java运行时环境版本:\n"+System.getProp ...

  4. 带图形桌面的CentOS7----中安装VMWareTools以及支持中文输入

    主机是WIN10操作系统 安装VMWareTools的方法:https://jingyan.baidu.com/article/e8cdb32b136ad637052bad26.html 在图形化Ce ...

  5. 利用Resttemplate进行put请求

    开发中,最常用的是post.get这两种.今天我给大家展示一个利用put请求的demo,其实put请求跟post请求没啥区别,但是没有返回值. void put(String var1, @Nulla ...

  6. tkinter学习-事件绑定与窗口

    阅读目录: 事件绑定 Toplevel组件 标准对话框 事件绑定: 说明:对于每个组件来说,可以通过bind()方法将函数或方法绑定到具体的事件上. 事件序列: 说明:用户需要使用bind()方法将具 ...

  7. GIMP中的新建Layer与更改Layer大小

    这边可以直接New Layer,新建一个Layer,还可以New from Visible,第二种是将当前的状态下图像复制出来. 改变Layer的大小,一般的方法两种: Crop to Selecti ...

  8. Web框架之Django_03 路由层了解(路有层 无名分组、有名分组、反向解析、路由分发 视图层 JsonResponse,FBV、CBV、文件上传)

    摘要: 路由层 无名分组 有名分组 反向解析 路由分发 名称空间 伪静态网页.虚拟环境 视图层 JsonResponse FBV 与 CBV(function base views与class bas ...

  9. ACM-ICPC 2018 南京赛区网络预赛 L. Magical Girl Haze

    262144K   There are NN cities in the country, and MM directional roads from uu to v(1\le u, v\le n)v ...

  10. VIJOS1476 旅行规划(树形Dp + DFS暴力乱搞)

    题意: 给出一个树,树上每一条边的边权为 1,求树上所有最长链的点集并. 细节: 可能存在多条最长链!最长链!最长链!重要的事情说三遍 分析: 方法round 1:暴力乱搞Q A Q,边权为正-> ...