首页 > 其他分享 >Android实战简易教程-第二十一枪(GridView动态添加Item)

Android实战简易教程-第二十一枪(GridView动态添加Item)

时间:2022-11-11 15:36:19浏览次数:43  
标签:GridView layout parent Item mDatas position import Android android


本例子实现在GridView的最后显示一个增加图片,点击图片动态增加内容item。

1.main.xml:

<RelativeLayout 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" >

<GridView
android:id="@+id/gv_test"
android:numColumns="3"
android:layout_width="match_parent"
android:layout_height="match_parent" />

</RelativeLayout>


2.grid_item.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<ImageView
android:id="@+id/item"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />

</LinearLayout>


3.GridViewAdapter.java:

package com.yayun.gridviewdemo;

import java.util.List;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;

public class GridViewAdapter extends BaseAdapter {
private Context context;
private List<Integer> list;
LayoutInflater layoutInflater;
private ImageView mImageView;

public GridViewAdapter(Context context, List<Integer> list) {
this.context = context;
this.list = list;
layoutInflater = LayoutInflater.from(context);
}

@Override
public int getCount() {
return list.size()+1;//注意此处
}

@Override
public Object getItem(int position) {
return list.get(position);
}

@Override
public long getItemId(int position) {
return position;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {

convertView = layoutInflater.inflate(R.layout.grid_item, null);
mImageView = (ImageView) convertView.findViewById(R.id.item);
if (position < list.size()) {
mImageView.setBackgroundResource(list.get(position));
}else{
mImageView.setBackgroundResource(R.drawable.pic3);//最后一个显示加号图片
}
return convertView;
}

}


4.MainActivity.java:

package com.yayun.gridviewdemo;

import java.util.ArrayList;
import java.util.List;

import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.GridView;
import android.widget.Toast;

public class MainActivity extends ActionBarActivity {
private List<Integer> mDatas;
private GridView mGridView;
private GridViewAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mGridView=(GridView) findViewById(R.id.gv_test);

initDatas();
adapter=new GridViewAdapter(MainActivity.this,mDatas);
mGridView.setAdapter(adapter);
mGridView.setOnItemClickListener(new OnItemClickListener() {

@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
if(position==parent.getChildCount()-1){
mDatas.add(R.drawable.pic1);
Toast.makeText(MainActivity.this, "您点击了添加", 1).show();
adapter=new GridViewAdapter(MainActivity.this, mDatas);
mGridView.setAdapter(adapter);
adapter.notifyDataSetChanged();
}

}
});

}
private void initDatas() {
mDatas=new ArrayList<>();
mDatas.add(R.drawable.pic1);
mDatas.add(R.drawable.pic1);
mDatas.add(R.drawable.pic1);
mDatas.add(R.drawable.pic1);
mDatas.add(R.drawable.pic1);

}


}


5.运行项目:

Android实战简易教程-第二十一枪(GridView动态添加Item)_xml

参考上一篇博客的删除,可以实现动态增加和动态删除功能。

喜欢的朋友关注我!

标签:GridView,layout,parent,Item,mDatas,position,import,Android,android
From: https://blog.51cto.com/u_15866446/5845022

相关文章

  • Android实战简易教程-第二十五枪(基于Baas的数据表查询下拉刷新和上拉加载实现!)
    上一节我们实现了数据表的加载,但是,当数据表数据很多时,我们就要考虑数据的分页,这里我们选用了PullToRefreshListView控件,先看一下该控件的说明:效果图:        ......
  • 关于MacBook怎么更新Android SDK
    昨天公司的人给了我一个VPN,但是还是无法更新SDK,后来发现将下图:通过VPN发送所有流量勾选以后就可以连接更新了,哎,处处皆学问,特此分享一下此经验。喜欢的朋友关注我哦!多谢支持......
  • Android 找不到资源文件错误的解决办法
    有些时候我们明明在layout文件夹下面配置了布局文件,但是在activity中却报错,提示找不到该文件。解决办法:这是因为你导入的R包不对,将activity文件import中后缀为.R的一行删除,......
  • Android studio 日志输出
      Log.v("Tag","Msg");//Verbose观察值,Verbose是冗长、啰嗦的意思,任何消息都会输出Log.d("Tag","Msg");//Debug调试Log.i("Tag","Msg");//Info信息,为一般提示......
  • Android--调用百度地图API
    首先申请一个百度地图的APIKEY,具体方法网上已有,申请后获得:main.xml代码如下:<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:to......
  • Android项目实战-云词典
    前段时间在网上看到了一篇滴答词典的项目文章,实现简单的单词查找、整句翻译和生词本功能,但是该项目年代久远,所用的API已不再提供数据,我决定利用它的已有框架实现其功能,主要......
  • Android中Task任务栈的分配
    首先我们来看下Task的定义,Google是这样定义Task的:ataskiswhattheuserexperiencesasan"application."It'sagroupofrelatedactivities,arrangedinastack.......
  • Android实战简易教程-第十枪(画廊组件Gallery实用研究)
    Gallery组件用于拖拽浏览图片,下面我们就来看一下如何实现。一、实现Gallery1.布局文件很简单:<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="http://......
  • Android实战简易教程-第十二枪(ViewFlipper实现幻灯效果)
    ViewFlipper在实际项目中用到的不是很多了,但是作为初学者的我们还是有必要了解一下它的主要用法。本实例结合手势类(GestureDetector),实现图片的浏览功能。直接看代码1.MainA......
  • 【Android动画九章】-浮动菜单
    上几节讨论了各种各样的属性动画,这里将这些知识组合起来,模拟如下图所示的浮动菜单功能。1.activity_main.xml:<?xmlversion="1.0"encoding="utf-8"?><FrameLayoutxmlns......