![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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.example.wang.testapp2.TestActivity10" 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" 21 android:columnWidth="120dp" 22 ></GridView> 23 24 <Button 25 android:layout_width="wrap_content" 26 android:layout_height="wrap_content" 27 android:text="添加" 28 android:onClick="bt10_OnClick"/> 29 </LinearLayout>
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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 android:padding="20dp"> 7 8 <EditText 9 android:layout_width="match_parent" 10 android:layout_height="wrap_content" 11 android:hint="请选择图片" 12 android:id="@+id/et_3"/> 13 <EditText 14 android:layout_width="match_parent" 15 android:layout_height="wrap_content" 16 android:hint="请输入名称" 17 android:id="@+id/et_4"/> 18 19 20 21 </LinearLayout>
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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="90dp" 10 android:id="@+id/iv_3" 11 android:layout_gravity="center"/> 12 <TextView 13 android:layout_width="wrap_content" 14 android:layout_height="wrap_content" 15 android:id="@+id/tv_9" 16 android:text="内容" 17 android:layout_gravity="center"/> 18 19 </LinearLayout>
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 package com.example.wang.testapp2; 2 3 import android.app.ActionBar; 4 import android.app.AlertDialog; 5 import android.content.DialogInterface; 6 import android.support.v7.app.AppCompatActivity; 7 import android.os.Bundle; 8 import android.util.Log; 9 import android.view.View; 10 import android.view.ViewGroup; 11 import android.widget.AbsListView; 12 import android.widget.AdapterView; 13 import android.widget.BaseAdapter; 14 import android.widget.EditText; 15 import android.widget.GridView; 16 import android.widget.ImageView; 17 import android.widget.ListView; 18 import android.widget.TextView; 19 import android.widget.Toast; 20 21 import java.util.ArrayList; 22 import java.util.List; 23 24 public class TestActivity10 extends AppCompatActivity { 25 26 GridView gv_1; 27 28 List<MyClass> lm; 29 // List<Integer> liv; 30 31 32 @Override 33 protected void onCreate(Bundle savedInstanceState) { 34 super.onCreate(savedInstanceState); 35 setContentView(R.layout.activity_test10); 36 37 GridView gv_1=(GridView)findViewById(R.id.gv_1); 38 39 lm=new ArrayList<>(); 40 41 final MyClass myClass=new MyClass(R.drawable.f1,"美食1"); 42 43 lm.add(myClass); 44 45 lm.add(new MyClass(R.drawable.f2,"美食2")); 46 lm.add(new MyClass(R.drawable.f3,"美食3")); 47 lm.add(new MyClass(R.drawable.f4,"美食4")); 48 lm.add(new MyClass(R.drawable.f5,"美食5")); 49 lm.add(new MyClass(R.drawable.f6,"美食6")); 50 lm.add(new MyClass(R.drawable.f7,"美食7")); 51 lm.add(new MyClass(R.drawable.f8,"美食8")); 52 53 54 GridAdapter gridAdapter=new GridAdapter(); 55 56 gv_1.setAdapter(gridAdapter); 57 58 59 60 61 62 // //1 数据 图片的id 63 // liv =new ArrayList<>(); 64 // liv.add(R.drawable.f1); 65 // liv.add(R.drawable.f2); 66 // liv.add(R.drawable.f3); 67 // liv.add(R.drawable.f4); 68 // liv.add(R.drawable.f5); 69 // liv.add(R.drawable.f6); 70 // liv.add(R.drawable.f7); 71 // liv.add(R.drawable.f8); 72 // liv.add(R.drawable.f9); 73 // liv.add(R.drawable.f10); 74 75 final GridAdapter im=new GridAdapter(); 76 77 gv_1.setAdapter(im); 78 79 gv_1.setOnItemClickListener(new AdapterView.OnItemClickListener() { 80 @Override 81 public void onItemClick(AdapterView<?> parent, View view, int position, final long id) { 82 83 final View view1=View.inflate(TestActivity10.this,R.layout.gridadapter_view,null); 84 85 new AlertDialog.Builder(TestActivity10.this) 86 .setTitle("请操作...") 87 .setView(view1) 88 .setPositiveButton("修改", new DialogInterface.OnClickListener() { 89 @Override 90 public void onClick(DialogInterface dialog, int which) { 91 92 EditText et_4 = (EditText) view1.findViewById(R.id.et_4); 93 94 String string2 = et_4.getText().toString(); 95 96 myClass.setName(string2); 97 98 99 EditText et_3 = (EditText) view1.findViewById(R.id.et_3); 100 101 String string1 = et_3.getText().toString(); 102 103 String f9 = "f9", f10 = "f10"; 104 105 if (string1.equals(f9)) { 106 107 myClass.setImg(R.drawable.f9); 108 } else if (string1.equals(f10)) { 109 myClass.setImg(R.drawable.f10); 110 } 111 else { 112 113 if (string2.length() == 0 && string1.length() == 0) { 114 115 Toast.makeText(TestActivity10.this, "请至少修改一项", Toast.LENGTH_SHORT).show(); 116 } 117 } 118 119 } 120 }) 121 .setNegativeButton("取消", null) 122 .show(); 123 124 125 } 126 }); 127 128 //长按删除的监听器 129 gv_1.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { 130 @Override 131 public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) { 132 133 //1.删除数据 134 // 从集合里删除长按的数据 135 lm.remove(position); 136 137 //2.刷新视图,看到效果 138 // 通知适配器,数据源改变了 139 im.notifyDataSetChanged(); 140 141 Toast.makeText(TestActivity10.this, "删除了记录索引="+position, Toast.LENGTH_SHORT).show(); 142 143 return true;//事件已经被消费,不要在处理了 144 } 145 }); 146 147 148 } 149 150 public void bt10_OnClick(View v) 151 { 152 153 final View view1=View.inflate(TestActivity10.this,R.layout.gridadapter_view,null); 154 155 new AlertDialog.Builder(TestActivity10.this) 156 .setTitle("请操作...") 157 .setView(view1) 158 .setPositiveButton("添加",null) 159 .setNegativeButton("取消", null) 160 .show(); 161 162 } 163 164 165 class MyClass 166 { 167 private int img; 168 169 private String name; 170 171 172 public int getImg() { 173 return img; 174 } 175 176 public void setImg(int img) { 177 this.img = img; 178 } 179 180 public String getName() { 181 return name; 182 } 183 184 public void setName(String name) { 185 this.name = name; 186 } 187 188 public MyClass(int img,String name) 189 { 190 this.img=img; 191 this.name=name; 192 } 193 } 194 195 196 // //适配器 197 // 198 // class ImageAdapter extends BaseAdapter 199 // { 200 // @Override 201 // public int getCount() { 202 // return liv.size(); 203 // } 204 // 205 // @Override 206 // public Object getItem(int position) { 207 // return liv.get(position); 208 // } 209 // 210 // @Override 211 // public long getItemId(int position) { 212 // return 0; 213 // } 214 // 215 // @Override 216 // public View getView(int position, View convertView, ViewGroup parent) { 217 // 218 // //1. 得到数据 图片的id 219 // Integer ivid = liv.get(position); 220 // 221 // //2.准备View 222 // if (convertView == null) { 223 // convertView = new ImageView(TestActivity10.this); 224 // } 225 // 226 // //3.适配 227 // // 转换 228 // ImageView imageView = (ImageView) convertView; 229 // 230 // imageView.setImageResource(ivid); 231 // 232 //// imageView.setMaxWidth(70); 233 //// imageView.setMaxHeight(70); 234 // 235 // imageView.setLayoutParams(new GridView.LayoutParams(110, 110)); 236 // 237 // 238 // return imageView; 239 240 class GridAdapter extends BaseAdapter 241 { 242 @Override 243 public int getCount() { 244 return lm.size(); 245 } 246 247 @Override 248 public Object getItem(int position) { 249 return lm.get(position); 250 } 251 252 @Override 253 public long getItemId(int position) { 254 return 0; 255 } 256 257 @Override 258 public View getView(int position, View convertView, ViewGroup parent) { 259 MyClass myClass=lm.get(position); 260 261 if (convertView==null) 262 { 263 Log.e("TAG","适配器getView="+position); 264 265 convertView=View.inflate(TestActivity10.this,R.layout.listview_layout,null); 266 } 267 268 ImageView imageView=(ImageView)convertView.findViewById(R.id.iv_3); 269 imageView.setImageResource(myClass.getImg()); 270 271 TextView textView=(TextView)convertView.findViewById(R.id.tv_9); 272 textView.setText(myClass.getName()); 273 274 275 return convertView; 276 } 277 } 278 279 }