给GridView提供点击按钮添加新数据,单击项目修改,长按删除功能

activity_practise7的layout文件:

 <?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:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.hanqi.testapp2.PractiseActivity7"
android:orientation="vertical"> <GridView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/gv_1"
android:numColumns="4"
android:stretchMode="columnWidth"
android:gravity="center"
android:horizontalSpacing="30dp"></GridView>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="点击添加"
android:onClick="bt_tj_onClick"/>
</LinearLayout>

activity_practise7_1的layout文件:

 <?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"> <EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/et_3"
android:gravity="center"
android:hint="从a,b,c,d里面选择图片"/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/et_4"
android:hint="给图片命名"
android:gravity="center"/>
</LinearLayout>

gridview_layout的layout文件:

 <?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="110dp"
android:layout_height="110dp"
android:id="@+id/iv_3"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/tv_3"/>
</LinearLayout>

java类:

 package com.hanqi.testapp2;

 import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.EditText;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast; import java.util.ArrayList;
import java.util.List; public class PractiseActivity7 extends AppCompatActivity { GridView gv_1;
List<MyClass> liv;
TextView tv_3;
ImageView iv_3;
final ImageAdapter imageAdapter = new ImageAdapter(); @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_practise7);
gv_1 = (GridView)findViewById(R.id.gv_1);
tv_3 = (TextView)findViewById(R.id.tv_3);
iv_3 = (ImageView)findViewById(R.id.iv_3); //1、数据 图片的id
liv = new ArrayList<>();
final MyClass myClass = new MyClass(R.drawable.f1,"美食1的介绍");
liv.add(myClass);
liv.add(new MyClass(R.drawable.f2,"美食2的介绍"));
liv.add(new MyClass(R.drawable.f3,"美食3的介绍"));
liv.add(new MyClass(R.drawable.f4,"美食4的介绍"));
liv.add(new MyClass(R.drawable.f5,"美食5的介绍"));
liv.add(new MyClass(R.drawable.f6,"美食6的介绍"));
liv.add(new MyClass(R.drawable.f7,"美食7的介绍"));
liv.add(new MyClass(R.drawable.f8,"美食8的介绍")); gv_1.setAdapter(imageAdapter); gv_1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
final MyClass myClass = liv.get(position); //这一步非常重要,要不然不知道修改的哪部分
LayoutInflater layoutInflater = getLayoutInflater();
final View view1 = layoutInflater.inflate(R.layout.activity_practise7_1, null);
new AlertDialog.Builder(PractiseActivity7.this)
.setTitle("修改内容")
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
EditText et_3=(EditText)view1.findViewById(R.id.et_3);
String string1=et_3.getText().toString();
EditText et_4 = (EditText)view1.findViewById(R.id.et_4);
String string2 = et_4.getText().toString();
String a="a",b="b",c="c",d="d";
if (string1.equals(a))
{
if (string2.length() ==0)
{
myClass.setImg(R.drawable.anniu01);
}
else
{
myClass.setImg(R.drawable.anniu01);
myClass.setContent(string2);
}
}
else if (string1.equals(b))
{
if (string2.length() ==0)
{
myClass.setImg(R.drawable.anniu02);
}
else
{
myClass.setImg(R.drawable.anniu02);
myClass.setContent(string2);
}
}
else if (string1.equals(c))
{
if (string2.length() ==0)
{
myClass.setImg(R.drawable.anniu04);
}
else
{
myClass.setImg(R.drawable.anniu04);
myClass.setContent(string2);
}
}
else if (string1.equals(d))
{
if (string2.length() ==0)
{
myClass.setImg(R.drawable.anniu05);
}
else
{
myClass.setImg(R.drawable.anniu05);
myClass.setContent(string2);
}
}
else
{
Toast.makeText(PractiseActivity7.this, "请做出至少一项修改", Toast.LENGTH_SHORT).show();
}
imageAdapter.notifyDataSetChanged();
}
})
.setView(view1)
.show();
}
}); gv_1.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) { //1.删除数据
//从集合里删除长按的数据
liv.remove(position);
//2.刷新视图,看到效果
//通知适配器,数据源改变
imageAdapter.notifyDataSetChanged();
Toast.makeText(PractiseActivity7.this, "删除了记录索引 = " + position, Toast.LENGTH_SHORT).show();
return true;//事件已经被消费,不要再处理了
}
});
}
public void bt_tj_onClick(View v)
{
final View view=View.inflate(PractiseActivity7.this, R.layout.activity_practise7_1, null);
new AlertDialog.Builder(PractiseActivity7.this)
.setTitle("添加的内容")
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
EditText et_3=(EditText)view.findViewById(R.id.et_3);
String string1=et_3.getText().toString();
EditText et_4 = (EditText)view.findViewById(R.id.et_4);
String string2 = et_4.getText().toString();
String a="a",b="b",c="c",d="d";
if (string1.equals(a))
{
liv.add(new MyClass(R.drawable.anniu01,string2));
}
else if (string1.equals(b))
{
liv.add(new MyClass(R.drawable.anniu02,string2));
}
else if (string1.equals(c))
{
liv.add(new MyClass(R.drawable.anniu04,string2));
}
else if (string1.equals(d))
{
liv.add(new MyClass(R.drawable.anniu05,string2));
}
else
{
Toast.makeText(PractiseActivity7.this, "请从a,b,c,d中选择",
Toast.LENGTH_SHORT).show();
}
imageAdapter.notifyDataSetChanged();
}
})
.setView(view)
.show();
}
class MyClass
{
private int img;
private String content; public int getImg() {
return img;
} public void setImg(int img) {
this.img = img;
} public String getContent() {
return content;
} public void setContent(String content) {
this.content = content;
}
public MyClass(int img,String content)
{
this.img = img;
this.content = content;
}
}
//适配器
class ImageAdapter extends BaseAdapter
{
@Override
public int getCount() {
return liv.size();
} @Override
public Object getItem(int position) {
return liv.get(position);
} @Override
public long getItemId(int position) {
return 0;
} @Override
public View getView(int position, View convertView, ViewGroup parent) {
//1.得到数据 图片的id
MyClass myClass = liv.get(position);
//2.准备View
if (convertView ==null) {
convertView = View.inflate(PractiseActivity7.this, R.layout.gridview_layout, null);
}
//3.适配
//转换
ImageView imageView = (ImageView)convertView.findViewById(R.id.iv_3);
imageView.setImageResource(myClass.getImg()); TextView textView = (TextView)convertView.findViewById(R.id.tv_3);
textView.setText(myClass.getContent());
return convertView;
}
} }

Android——ListView相关作业(修改版)的更多相关文章

  1. Android ListView相关 头和尾 headView footerView

    ListView还可以添加头和尾部,而这头和尾就是View对象, 可以使用listView.addHeadView(view)方法和listView.addFootView(view)方法分别添加头和 ...

  2. Android ListView相关 fastScrollEnabled

    1.android:fastScrollEnabled="true" 当数据量比较多的时候,右侧会出现一个可以拉动的滚动条,这样可以很快的拉动,如图:

  3. Java第六次作业修改版

    import java.util.ArrayList; import java.util.Collections; import java.util.Random; public class Draw ...

  4. Android 仿美团网,大众点评购买框悬浮效果之修改版

    转帖请注明本文出自xiaanming的博客(http://blog.csdn.net/xiaanming/article/details/17761431),请尊重他人的辛勤劳动成果,谢谢! 我之前写 ...

  5. Android ListView的item背景色设置以及item点击无响应等相关问题

    Android ListView的item背景色设置以及item点击无响应等相关问题 在Android开发中,listview控件是非常常用的控件,在大多数情况下,大家都会改掉listview的ite ...

  6. 【腾讯Bugly干货分享】Android ListView与RecyclerView对比浅析--缓存机制

    本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/5811d3e3ab10c62013697408 作者:黄宁源 一,背景 Recy ...

  7. Android ListView 常用技巧

    Android ListView 常用技巧 Android TextView 常用技巧 1.使用ViewHolder提高效率 ViewHolder模式充分利用了ListView的视图缓存机制,避免了每 ...

  8. 转载:Eclipse+Spket插件+ExtJs4修改版提供代码提示功能[图]

    转载:Eclipse+Spket插件+ExtJs4修改版提供代码提示功能[图] ExtJs是一种主要用于创建前端用户界面,是一个基本与后台技术无关的前端ajax框架.功能丰富,无人能出其右.无论是界面 ...

  9. Indy 10.5.8 for Delphi and Lazarus 修改版(2011)

    Indy 10.5.8 for Delphi and Lazarus 修改版(2011)    Internet Direct(Indy)是一组开放源代码的Internet组件,涵盖了几乎所有流行的I ...

随机推荐

  1. android listview getviewtypecount和getItemViewType

    package newdemo.jeno.listviewdemo; import android.app.Activity;import android.os.Bundle;import andro ...

  2. S5PV210之beep-bus模型 linux3.0.8驱动

    目录: 一. bus-driver-device模型 二. 运行结果,及错误解决 三. 怎样利用以有的driver device驱动来写自已的beep-driver-device 驱动       四 ...

  3. OpenCV之响应鼠标(三):响应鼠标信息

    转自:http://blog.csdn.net/haihong84/article/details/6599838 程序代碼如下: #include <cv.h>#include < ...

  4. SharePoint 2013 Nintex Workflow 工作流帮助(九)

    博客地址 http://blog.csdn.net/foxdave 前叙:假期结束了,知道为什么假期如此短暂吗?因为假期的每天只有半天.春节过完了,新的一年开始了,大家或许之前在新年的时候都许下了自己 ...

  5. Properties类与读取properties文件

    Properties类 在Java中,其配置文件常为.properties文件,格式为文本文件,文件的内容的格式是“键=值”的格式,文本注释信息可以用"#"来注释. 这个类的几个常 ...

  6. python练习——最长的递减子序列

    题目: 求一个数组的最长递减子序列比 , 如随机生成一组序列 {8,9,6,3,6,2,3,4}   求得最长递减序列 {9,8,6,4,3,2} list=[3,3,3,3,6,2,3,4] //冒 ...

  7. loaderexceptions

    前段时间遇到一个问题 从容器中取数据时老报一个“无法加载一个或多个请求,请检索loaderexceptions” 真心是不晓得什么问题 以前经常这么用没有问题的 这个是在网站下引用了别的已经编译好的别 ...

  8. 在MyEclipse上搭建web服务器

    a)       Servlet是什么? Servlet(服务器端小程序)是使用Java语言编写的服务器端程序[o1] ,可以使用脚本语言,生成动态的web页. b)      Servlet的架构? ...

  9. phpstorm-file watcher

    在项目中使用了sass,将scss编译成css的时候,每次都需要compass watch netbeans产品带有file watcher功能 三大类 1,less,scss,sass into c ...

  10. PHP_Session

    Session有12个函数分别是: 01 session_start:  初始 session 02 session_destroy: 结束 session 03 session_unset: 释放s ...