Android——ListView相关作业

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

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>

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.GridView;
 13 import android.widget.ImageView;
 14 import android.widget.TextView;
 15 import android.widget.Toast;
 16
 17 import java.util.ArrayList;
 18 import java.util.List;
 19
 20 public class PractiseActivity7 extends AppCompatActivity {
 21
 22     GridView gv_1;
 23     List<MyClass> liv;
 24     TextView tv_3;
 25     ImageView iv_3;
 26     @Override
 27     protected void onCreate(Bundle savedInstanceState) {
 28         super.onCreate(savedInstanceState);
 29         setContentView(R.layout.activity_practise7);
 30         gv_1 = (GridView)findViewById(R.id.gv_1);
 31         tv_3 = (TextView)findViewById(R.id.tv_3);
 32         iv_3 = (ImageView)findViewById(R.id.iv_3);
 33
 34         //1、数据 图片的id
 35         liv = new ArrayList<>();
 36         MyClass myClass = new MyClass(R.drawable.f1,"美食1的介绍");
 37         liv.add(myClass);
 38         liv.add(new MyClass(R.drawable.f2,"美食2的介绍"));
 39         liv.add(new MyClass(R.drawable.f3,"美食3的介绍"));
 40         liv.add(new MyClass(R.drawable.f4,"美食4的介绍"));
 41         liv.add(new MyClass(R.drawable.f5,"美食5的介绍"));
 42         liv.add(new MyClass(R.drawable.f6,"美食6的介绍"));
 43         liv.add(new MyClass(R.drawable.f7,"美食7的介绍"));
 44         liv.add(new MyClass(R.drawable.f8, "美食8的介绍"));
 45         final ImageAdapter imageAdapter = new ImageAdapter();
 46         {
 47             gv_1.setAdapter(imageAdapter);
 48         }
 49
 50         gv_1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
 51             @Override
 52             public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
 53
 54             }
 55         });
 56
 57         gv_1.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
 58             @Override
 59             public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
 60
 61                 //1.删除数据
 62                 //从集合里删除长按的数据
 63                 liv.remove(position);
 64                 //2.刷新视图,看到效果
 65                 //通知适配器,数据源改变
 66                 imageAdapter.notifyDataSetChanged();
 67                 Toast.makeText(PractiseActivity7.this, "删除了记录索引 = " + position, Toast.LENGTH_SHORT).show();
 68                 return true;//事件已经被消费,不要再处理了
 69             }
 70         });
 71     }
 72     public void bt_tj_onClick(View v)
 73     {
 74         LayoutInflater layoutInflater = getLayoutInflater();
 75         View view = layoutInflater.inflate(R.layout.activity_practise7_1, null);
 76         new AlertDialog.Builder(this)
 77                 .setTitle("添加的内容")
 78                 .setPositiveButton("确定", new DialogInterface.OnClickListener() {
 79                     @Override
 80                     public void onClick(DialogInterface dialog, int which) {
 81                         liv.add(new MyClass(R.drawable.f9, "美食9的介绍"));
 82                         ImageAdapter imageAdapter = new ImageAdapter();
 83                         {
 84                             gv_1.setAdapter(imageAdapter);
 85                         }
 86
 87                     }
 88                 })
 89                 .setView(view)
 90                 .show();
 91     }
 92     class MyClass
 93     {
 94         private int img;
 95         private String content;
 96
 97         public int getImg() {
 98             return img;
 99         }
100
101         public void setImg(int img) {
102             this.img = img;
103         }
104
105         public String getContent() {
106             return content;
107         }
108
109         public void setContent(String content) {
110             this.content = content;
111         }
112         public MyClass(int img,String content)
113         {
114             this.img = img;
115             this.content = content;
116         }
117     }
118     //适配器
119     class ImageAdapter extends BaseAdapter
120     {
121         @Override
122         public int getCount() {
123             return liv.size();
124         }
125
126         @Override
127         public Object getItem(int position) {
128             return liv.get(position);
129         }
130
131         @Override
132         public long getItemId(int position) {
133             return 0;
134         }
135
136         @Override
137         public View getView(int position, View convertView, ViewGroup parent) {
138             //1.得到数据 图片的id
139             MyClass myClass = liv.get(position);
140             //2.准备View
141             if (convertView ==null) {
142                 convertView = View.inflate(PractiseActivity7.this, R.layout.gridview_layout, null);
143             }
144             //3.适配
145             //转换
146             ImageView imageView = (ImageView)convertView.findViewById(R.id.iv_3);
147             imageView.setImageResource(myClass.getImg());
148
149             TextView textView = (TextView)convertView.findViewById(R.id.tv_3);
150             textView.setText(myClass.getContent());
151
152             return convertView;
153         }
154     }
155 }

效果为:

修改功能还未做出来,而且目前有BUG,仍在调试中

时间: 2024-11-08 17:31:21

Android——ListView相关作业的相关文章

Android ListView 相关问题(面试常用)

今日,看到群里朋友发的一部分面试题,决定把这这些面试题的答案写下来,如下: 1.ListView怎么和ScrollView兼容? ok 2.ViewPager无限轮播图片 3.out of memory内存溢出怎么解决 4.三级缓存如何实现 5.登录时怎么保存用户名密码实现下次自动登录 6.如果sp只存储用户名,比如三个用户都存在sp里,取出来怎么取?存进去怎么存?你怎么区分 7.你们登录就只有登录成功和登录失败吗?难道没有重连机制?断网了以后又有网了重新来到登录界面怎么登录? 8.怎么保持在线

Android ListView复杂列表优化实践

原文:Android ListView复杂列表优化实践 很多社交App都不免会涉及到复杂的列表元素实现,一个列表上面可能大量的图片,不定长的评论列表,给手机端的程序员带来了不少的挑战.本文就是在实现复杂的列表滑动的情况下,利用已知的优化方法指导下的一次优化实践,旨在提升ListView的滑动流畅度,为用户带来良好的体验. 1:设计稿: 这是列表中可能出现的ItemView,有两种,但是又有许多相同的地方,比如一样有点赞的图片,评论等...其中,评论和点赞的数量是可变的. 2:使用一般布局带来的问

android ListView 分析(一)

需要了解的内容 1. listview中的getItemAtPosition与Adapter的getItem的position的区别 listView中的getItemAtPosition的源码实现: 1 /** 2 * Gets the data associated with the specified position in the list. 3 * 4 * @param position Which data to get 5 * @return The data associated

Android ListView条目全选功能,不用checkbox实现!

大家好,翻了翻以前的笔记,发现了一个我特别标记的功能,那就是ListView全选功能,顿时想起了我那个时候苦逼的生涯,由于我大学机械出身,大学毕业了都不知道什么叫代码,在58干了一段销售.实在是干不下去了,不干了就得在网上找工作,就喜欢干电脑相关的工作,有一天,一家培训机构给我打来电话让我去面试,我以为让我去工作那,谁知道是忽悠我去培训,我当然不可能花钱了,就直接回去了,想了几天,除了销售我真不知道干啥,咬咬牙,就花钱培训了.我擦,咋说这到了,不跟你们说了,还是写下面的这个功能吧,虽然很简单,但

Android ListView 和 Adapter 从本地/网络获取歌曲列表

本文内容 环境 项目结构 演示1:SimpleAdapter 演示2:BaseAdapter 演示3:customlazylist 演示4:customcompletelazylist 本文只给出演示概要,代码太多,贴出来意义不大,自己下载调试一下,点击此处下载. 本文通过四个示例,循序渐进地演示,将歌曲列表加载到 ListView 控件,歌曲列表,包括缩略图.歌手名.歌曲名等信息,或存放在本地,或以 JSON 形式存放在网络. 环境 Windows 2008 R2 64 位 Eclipse A

【Anroid】第9章 列表视图(1)--ListView相关类及其适配器

分类:C#.Android.VS2015: 创建日期:2016-02-18 一.简介 列表视图(ListView)是Android应用程序中使用最频繁的UI组件,从无处不在短菜单选项列表到冗长的联系人或internet收藏夹列表--都会用它来实现. ListView控件的用法非常灵活,既可以使用内置的视图呈现基本的样式,也可以用自定义视图呈现各种特殊的视觉效果. 要完全掌握Android提供的ListView控件的用法,需要解决下面的问题: (1)如何用Android内置的视图呈现列表视图中的每

我的Android开发相关文章

Pro Android学习笔记: Pro Android学习笔记(一零七):2D动画(2):layout渐变动画 2014.7.25 Pro Android学习笔记(一零六):2D动画(1):frame by frame 2014.7.21 Pro Android学习笔记(一零五):Alarm Manager(3):request code 2014.7.17 Pro Android学习笔记(一零四):Alarm Manager(2):周期发送和取消 2014.7.15 Pro Android学

Android ListView圆角

首先来看看ListView 相关基本属性 1.单击列表后,列表的背景变成黑色了.可通过指定android:cacheColorHint的属性来放变它,将它指定为透明.使用下面的属性值: android:cacheColorHint="#000000" 即可. 2.去除列表项中间的分割线:android:divider="#00000000",这里的值也可以指向一个drawable图片对象(android:divider="@drawable/list_li

Android ListView CheckBox状态错乱(转)

转自:http://www.cnblogs.com/wujd/archive/2012/08/17/2635309.html listView中包含checkBox的时候,经常会发生其中的checkBox错乱的问题,大多时候的代码如下: 先看一下效果图:奇数行为选中状态,偶数行为非选中状态 具体代码: 布局文件: 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:andro