给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. Ohlàlà

    Chap 1数数字 un 1 deux 2 trois 3 quatre 4 cinq 5 six 6 sept 7 huit 8 neuf 9 dix 10   Chap 2 讲地名 Paris 巴 ...

  2. [C/C++]C++标准

    本文若如特别说明都引于ISO/IEC 14882:2011 7.声明(Declarations) 声明序列(declaration-seq):    声明(declaration)    声明序列(d ...

  3. DetectEncoding

    private Encoding DetectEncoding(ref Stream stream) { if (_pageEncoding != null) { return _pageEncodi ...

  4. Queryable.GroupBy<TSource, TKey> 方法 (IQueryable<TSource>, Expression<Func<TSource, TKey>>) 转

    根据指定的键选择器函数对序列中的元素进行分组. 命名空间:  System.Linq程序集:  System.Core(在 System.Core.dll 中) 语法 C# C++ F# VB   p ...

  5. HTML--9表单和验证事件

    1.表单验证<form></form> (1).非空验证(去空格) (2).对比验证(跟一个值对比) (3).范围验证(根据一个范围进行判断) (4).固定格式验证:电话号码, ...

  6. kali linux karmetasploit配置

    原理分析:http://www.freebuf.com/articles/77055.html 转官方说明:https://www.offensive-security.com/metasploit- ...

  7. 技术分享:逆向分析ATM分离器

    文章内容仅供技术交流,请勿模仿操作! 背景(作者) 每一次外出时, Elizabeth和我总是格外的小心,同时把我们身上的钱藏在特殊的皮带上面,这样还不够,我们还采取了“狡兔三窟”的方式来藏身上带的银 ...

  8. 使用Dmitry Sklyarov的方法来破解一款流行的4G调制解调器

    逆向工程师如果对设备代码和固件系统进行检测时,发现了许多经过加密处理的固件文件,该怎么办?在本文中我将通过一个真实的故事来教大家如何利用一些基础的计算机知识以及简单的逻辑来应对这一问题. 因为这篇文章 ...

  9. 深入理解:Android 编译系统

    一,简介: Android Build 系统是用来编译 Android 系统,Android SDK 以及相关文档的一套框架.众所周知,Android 是一个开源的操作系统.Android 的源码中包 ...

  10. HDOJ-三部曲一(搜索、数学)-1010-Pots

    Pots Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 131072/65536K (Java/Other) Total Submiss ...