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

activity_practise7的layout文件:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. xmlns:tools="http://schemas.android.com/tools"
  4. android:layout_width="match_parent"
  5. android:layout_height="match_parent"
  6. android:paddingBottom="@dimen/activity_vertical_margin"
  7. android:paddingLeft="@dimen/activity_horizontal_margin"
  8. android:paddingRight="@dimen/activity_horizontal_margin"
  9. android:paddingTop="@dimen/activity_vertical_margin"
  10. tools:context="com.hanqi.testapp2.PractiseActivity7"
  11. android:orientation="vertical">
  12.  
  13. <GridView
  14. android:layout_width="match_parent"
  15. android:layout_height="wrap_content"
  16. android:id="@+id/gv_1"
  17. android:numColumns="4"
  18. android:stretchMode="columnWidth"
  19. android:gravity="center"
  20. android:horizontalSpacing="30dp"></GridView>
  21. <Button
  22. android:layout_width="wrap_content"
  23. android:layout_height="wrap_content"
  24. android:text="点击添加"
  25. android:onClick="bt_tj_onClick"/>
  26. </LinearLayout>

activity_practise7_1的layout文件:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:orientation="vertical"
  4. android:layout_width="match_parent"
  5. android:layout_height="match_parent">
  6.  
  7. <EditText
  8. android:layout_width="match_parent"
  9. android:layout_height="wrap_content"
  10. android:id="@+id/et_3"
  11. android:gravity="center"
  12. android:hint="从a,b,c,d里面选择图片"/>
  13. <EditText
  14. android:layout_width="match_parent"
  15. android:layout_height="wrap_content"
  16. android:id="@+id/et_4"
  17. android:hint="给图片命名"
  18. android:gravity="center"/>
  19. </LinearLayout>

gridview_layout的layout文件:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:orientation="vertical"
  4. android:layout_width="match_parent"
  5. android:layout_height="match_parent">
  6.  
  7. <ImageView
  8. android:layout_width="110dp"
  9. android:layout_height="110dp"
  10. android:id="@+id/iv_3"/>
  11. <TextView
  12. android:layout_width="wrap_content"
  13. android:layout_height="wrap_content"
  14. android:id="@+id/tv_3"/>
  15. </LinearLayout>

java类:

  1. package com.hanqi.testapp2;
  2.  
  3. import android.app.AlertDialog;
  4. import android.content.DialogInterface;
  5. import android.os.Bundle;
  6. import android.support.v7.app.AppCompatActivity;
  7. import android.view.LayoutInflater;
  8. import android.view.View;
  9. import android.view.ViewGroup;
  10. import android.widget.AdapterView;
  11. import android.widget.BaseAdapter;
  12. import android.widget.EditText;
  13. import android.widget.GridView;
  14. import android.widget.ImageView;
  15. import android.widget.TextView;
  16. import android.widget.Toast;
  17.  
  18. import java.util.ArrayList;
  19. import java.util.List;
  20.  
  21. public class PractiseActivity7 extends AppCompatActivity {
  22.  
  23. GridView gv_1;
  24. List<MyClass> liv;
  25. TextView tv_3;
  26. ImageView iv_3;
  27. final ImageAdapter imageAdapter = new ImageAdapter();
  28.  
  29. @Override
  30. protected void onCreate(Bundle savedInstanceState) {
  31. super.onCreate(savedInstanceState);
  32. setContentView(R.layout.activity_practise7);
  33. gv_1 = (GridView)findViewById(R.id.gv_1);
  34. tv_3 = (TextView)findViewById(R.id.tv_3);
  35. iv_3 = (ImageView)findViewById(R.id.iv_3);
  36.  
  37. //1、数据 图片的id
  38. liv = new ArrayList<>();
  39. final MyClass myClass = new MyClass(R.drawable.f1,"美食1的介绍");
  40. liv.add(myClass);
  41. liv.add(new MyClass(R.drawable.f2,"美食2的介绍"));
  42. liv.add(new MyClass(R.drawable.f3,"美食3的介绍"));
  43. liv.add(new MyClass(R.drawable.f4,"美食4的介绍"));
  44. liv.add(new MyClass(R.drawable.f5,"美食5的介绍"));
  45. liv.add(new MyClass(R.drawable.f6,"美食6的介绍"));
  46. liv.add(new MyClass(R.drawable.f7,"美食7的介绍"));
  47. liv.add(new MyClass(R.drawable.f8,"美食8的介绍"));
  48.  
  49. gv_1.setAdapter(imageAdapter);
  50.  
  51. gv_1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
  52. @Override
  53. public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
  54. final MyClass myClass = liv.get(position); //这一步非常重要,要不然不知道修改的哪部分
  55. LayoutInflater layoutInflater = getLayoutInflater();
  56. final View view1 = layoutInflater.inflate(R.layout.activity_practise7_1, null);
  57. new AlertDialog.Builder(PractiseActivity7.this)
  58. .setTitle("修改内容")
  59. .setPositiveButton("确定", new DialogInterface.OnClickListener() {
  60. @Override
  61. public void onClick(DialogInterface dialog, int which) {
  62. EditText et_3=(EditText)view1.findViewById(R.id.et_3);
  63. String string1=et_3.getText().toString();
  64. EditText et_4 = (EditText)view1.findViewById(R.id.et_4);
  65. String string2 = et_4.getText().toString();
  66. String a="a",b="b",c="c",d="d";
  67. if (string1.equals(a))
  68. {
  69. if (string2.length() ==0)
  70. {
  71. myClass.setImg(R.drawable.anniu01);
  72. }
  73. else
  74. {
  75. myClass.setImg(R.drawable.anniu01);
  76. myClass.setContent(string2);
  77. }
  78. }
  79. else if (string1.equals(b))
  80. {
  81. if (string2.length() ==0)
  82. {
  83. myClass.setImg(R.drawable.anniu02);
  84. }
  85. else
  86. {
  87. myClass.setImg(R.drawable.anniu02);
  88. myClass.setContent(string2);
  89. }
  90. }
  91. else if (string1.equals(c))
  92. {
  93. if (string2.length() ==0)
  94. {
  95. myClass.setImg(R.drawable.anniu04);
  96. }
  97. else
  98. {
  99. myClass.setImg(R.drawable.anniu04);
  100. myClass.setContent(string2);
  101. }
  102. }
  103. else if (string1.equals(d))
  104. {
  105. if (string2.length() ==0)
  106. {
  107. myClass.setImg(R.drawable.anniu05);
  108. }
  109. else
  110. {
  111. myClass.setImg(R.drawable.anniu05);
  112. myClass.setContent(string2);
  113. }
  114. }
  115. else
  116. {
  117. Toast.makeText(PractiseActivity7.this, "请做出至少一项修改", Toast.LENGTH_SHORT).show();
  118. }
  119. imageAdapter.notifyDataSetChanged();
  120. }
  121. })
  122. .setView(view1)
  123. .show();
  124. }
  125. });
  126.  
  127. gv_1.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
  128. @Override
  129. public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
  130.  
  131. //1.删除数据
  132. //从集合里删除长按的数据
  133. liv.remove(position);
  134. //2.刷新视图,看到效果
  135. //通知适配器,数据源改变
  136. imageAdapter.notifyDataSetChanged();
  137. Toast.makeText(PractiseActivity7.this, "删除了记录索引 = " + position, Toast.LENGTH_SHORT).show();
  138. return true;//事件已经被消费,不要再处理了
  139. }
  140. });
  141. }
  142. public void bt_tj_onClick(View v)
  143. {
  144. final View view=View.inflate(PractiseActivity7.this, R.layout.activity_practise7_1, null);
  145. new AlertDialog.Builder(PractiseActivity7.this)
  146. .setTitle("添加的内容")
  147. .setPositiveButton("确定", new DialogInterface.OnClickListener() {
  148. @Override
  149. public void onClick(DialogInterface dialog, int which) {
  150. EditText et_3=(EditText)view.findViewById(R.id.et_3);
  151. String string1=et_3.getText().toString();
  152. EditText et_4 = (EditText)view.findViewById(R.id.et_4);
  153. String string2 = et_4.getText().toString();
  154. String a="a",b="b",c="c",d="d";
  155. if (string1.equals(a))
  156. {
  157. liv.add(new MyClass(R.drawable.anniu01,string2));
  158. }
  159. else if (string1.equals(b))
  160. {
  161. liv.add(new MyClass(R.drawable.anniu02,string2));
  162. }
  163. else if (string1.equals(c))
  164. {
  165. liv.add(new MyClass(R.drawable.anniu04,string2));
  166. }
  167. else if (string1.equals(d))
  168. {
  169. liv.add(new MyClass(R.drawable.anniu05,string2));
  170. }
  171. else
  172. {
  173. Toast.makeText(PractiseActivity7.this, "请从a,b,c,d中选择",
  174. Toast.LENGTH_SHORT).show();
  175. }
  176. imageAdapter.notifyDataSetChanged();
  177. }
  178. })
  179. .setView(view)
  180. .show();
  181. }
  182. class MyClass
  183. {
  184. private int img;
  185. private String content;
  186.  
  187. public int getImg() {
  188. return img;
  189. }
  190.  
  191. public void setImg(int img) {
  192. this.img = img;
  193. }
  194.  
  195. public String getContent() {
  196. return content;
  197. }
  198.  
  199. public void setContent(String content) {
  200. this.content = content;
  201. }
  202. public MyClass(int img,String content)
  203. {
  204. this.img = img;
  205. this.content = content;
  206. }
  207. }
  208. //适配器
  209. class ImageAdapter extends BaseAdapter
  210. {
  211. @Override
  212. public int getCount() {
  213. return liv.size();
  214. }
  215.  
  216. @Override
  217. public Object getItem(int position) {
  218. return liv.get(position);
  219. }
  220.  
  221. @Override
  222. public long getItemId(int position) {
  223. return 0;
  224. }
  225.  
  226. @Override
  227. public View getView(int position, View convertView, ViewGroup parent) {
  228. //1.得到数据 图片的id
  229. MyClass myClass = liv.get(position);
  230. //2.准备View
  231. if (convertView ==null) {
  232. convertView = View.inflate(PractiseActivity7.this, R.layout.gridview_layout, null);
  233. }
  234. //3.适配
  235. //转换
  236. ImageView imageView = (ImageView)convertView.findViewById(R.id.iv_3);
  237. imageView.setImageResource(myClass.getImg());
  238.  
  239. TextView textView = (TextView)convertView.findViewById(R.id.tv_3);
  240. textView.setText(myClass.getContent());
  241. return convertView;
  242. }
  243. }
  244.  
  245. }

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. 对比学习UIKit和AppKit--入门级

    UIKit是用来开发iOS的应用的,AppKit是用来开发Mac应用的,在使用过程中他们很相似,可是又有很多不同之处,通过对比分析它们的几个核心对象,可以避免混淆. UIKit和AppKit都有一个A ...

  2. PAT 07-2 A+B和C

    有两个值得注意的地方:1.变长数组(VLA)的使用,没想到PAT上的OJ竟然支持C99,一开始不知道就没用,看了看别人的,既然,还是用吧, 它有一点我不太喜欢,它不能像一般数组那样在声明时通过赋一个0 ...

  3. Iterator之java.util.ConcurrentModificationException

    在运行以下代码时,会报java.util.ConcurrentModificationException异常, public class Demo { public static void main( ...

  4. 让多个Fragment 切换时不重新实例化、FragmentTabHost切换Fragment时避免UI重新加载

    http://www.tuicool.com/articles/FJ7VBb FragmentTabHost切换Fragment时避免UI重新加载 不过,初次实现时发现有个缺陷,每次FragmentT ...

  5. fix eclipse gc overhead limit exceeded in mac

    fix eclipse gc overhead limit exceeded: 在mac上找不到eclipse.ini文件编辑内存限制,在eclipse安装目录右击eclipse程序,选“显示包内容” ...

  6. Interview----用最快的方法计算 Fibonacci 数

    输入 n, 用最快的方法求该 Fibocacci 数列的第 n 项. 方法1: 递归,非常慢 方法2: 迭代,因此计算 f[1] , f[2], f[3] ,,,, 复杂度 O(N) 方法3: 采用以 ...

  7. Git ~ 回到过去 , 进入未来 ~ Git

    概述 我们已经成功的添加了一个 readme.txt文件 , 现在是时候 继续工作了 , 于是 我们开始尝试一下 Git给我们所带来的便利下面修改read.txt 改成如下内容 为了尝试 Git 给我 ...

  8. N的阶乘的长度 V2(斯特林近似) 求 某个大数的阶乘的位数 .

    求某个大数的阶乘的位数 . 得到的值  需要 +1 得到真正的位数 斯特林公式在理论和应用上都具有重要的价值,对于概率论的发展也有着重大的意义.在数学分析中,大多都是利用Г函数.级数和含参变量的积分等 ...

  9. 将byte[]数组数据转换为图片用于预览显示

    假如服务器返回给你的图片信息是byte[] 然后你需要将起转换成图片显示到你的view中去: 按以下的步骤 1.将获取的byte数组保存 假如为temp[]; 2.将temp[]转化为bitmap,你 ...

  10. YII2.0中实现高级注册

    如何在不修改逻辑代码的情况下完美解决以上三个问题?看了下面的教程,一目了然! 以高级版2.0.6为例,打开/frontend/models/SignupForm.php class SignupFor ...