关于listview视图的 作业

代码运行目录

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
 3     package="com.example.administrator.testapp">
 4 
 5     <application
 6         android:allowBackup="true"
 7         android:icon="@mipmap/ic_launcher"
 8         android:label="@string/app_name"
 9         android:supportsRtl="true"
10         android:theme="@style/AppTheme">
11         <activity android:name=".MainActivity" />
12         <activity android:name=".test_activity6" />
13         <activity android:name=".TestActivity7" />
14         <activity android:name=".TestActivity8" />
15         <activity android:name=".Main2Activity" />
16         <activity android:name=".TestActivity9" />
17         <activity android:name=".TestActivity10" />
18         <activity android:name=".TestActivity11">
19         </activity>
20         <activity android:name=".TsetActivity12">
21             <intent-filter>
22                 <action android:name="android.intent.action.MAIN" />
23                 <category android:name="android.intent.category.LAUNCHER" />
24             </intent-filter>
25         </activity>
26     </application>
27 
28 </manifest>

布局文件

 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     <ImageView
 7         android:layout_width="70dp"
 8         android:layout_height="70dp"
 9         android:id="@+id/iv_1"/>
10     <TextView
11         android:layout_width="70dp"
12         android:layout_height="wrap_content"
13         android:gravity="center"
14         android:id="@+id/tv_1"/>
15 </LinearLayout>

表格布局文件

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <RelativeLayout 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.myapplication.Main2Activity">
11     <GridView
12         android:layout_width="match_parent"
13         android:layout_height="match_parent"
14         android:id="@+id/gv_1"
15         android:numColumns="4"
16         android:gravity="center"
17         android:horizontalSpacing="20dp">
18     </GridView>
19 </RelativeLayout>

自定义对话框布局文件

 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="50dp"
10         android:layout_marginTop="5dp"
11         android:gravity="center"
12         android:hint="请从f1~f10中选择一张图"
13         android:id="@+id/et_2" />
14     <EditText
15         android:layout_width="match_parent"
16         android:layout_height="50dp"
17         android:layout_marginTop="5dp"
18         android:gravity="center"
19         android:hint="请给图片命名"
20         android:id="@+id/et_1" />
21 </LinearLayout>

JAVA运行程序

  1 package com.example.administrator.testapp;
  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.util.Log;
  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 TsetActivity12 extends AppCompatActivity {
 22 
 23     GridView gv_1;
 24     List<MyClass> lm;
 25 
 26     @Override
 27     protected void onCreate(Bundle savedInstanceState) {
 28         super.onCreate(savedInstanceState);
 29         setContentView(R.layout.activity_main2);
 30 
 31         gv_1=(GridView)findViewById(R.id.gv_1);
 32 
 33         lm=new ArrayList<MyClass>();
 34 
 35         MyClass myClass=new MyClass(R.drawable.f1,"名称1");
 36 
 37         lm.add(myClass);
 38         lm.add(new MyClass(R.drawable.f2,"名称2"));
 39 
 40         lm.add(new MyClass(R.drawable.f3,"名称3"));
 41 
 42         lm.add(new MyClass(R.drawable.f4,"名称4"));
 43 
 44         lm.add(new MyClass(R.drawable.f5,"名称5"));
 45 
 46         lm.add(new MyClass(R.drawable.f6,"名称6"));
 47 
 48         lm.add(new MyClass(R.drawable.f7,"名称7"));
 49 
 50         lm.add(new MyClass(R.drawable.f8,"名称8"));
 51 
 52         lm.add(new MyClass(R.drawable.f9,"名称9"));
 53 
 54         final GridAdapter gridAdapter=new GridAdapter();
 55 
 56         gv_1.setAdapter(gridAdapter);
 57 
 58         gv_1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
 59 
 60             @Override
 61             public void onItemClick(AdapterView<?> parent, View view, final int position, long id) {
 62 
 63                 final View view1=View.inflate(TsetActivity12.this, R.layout.activity_main4, null);
 64 
 65                 new AlertDialog.Builder(TsetActivity12.this)
 66                         .setView(view1)
 67                         .setNegativeButton("添加", new DialogInterface.OnClickListener() {
 68                             @Override
 69                             public void onClick(DialogInterface dialog, int which) {
 70 
 71                                 EditText et_1=(EditText)view1.findViewById(R.id.et_1);
 72 
 73                                 String str12=et_1.getText().toString();
 74 
 75                                 if (str12.length()>=5||str12.trim().length()==0)
 76                                 {
 77                                     Toast.makeText(TsetActivity12.this, "不符合命名规则,请重新命名",
 78                                             Toast.LENGTH_SHORT).show();
 79 
 80                                     return;
 81                                 }
 82 
 83                                 EditText et_2=(EditText)view1.findViewById(R.id.et_2);
 84 
 85                                 String str22=et_2.getText().toString();
 86 
 87                                 String a="a",aa="aa",aaa="aaa",aaaa="aaaa";
 88 
 89                                 if (str22.equals(a))
 90                                 {
 91                                     lm.add(new MyClass(R.drawable.f1,str12));
 92                                 }
 93                                 else if (str22.equals(aa))
 94                                 {
 95                                     lm.add(new MyClass(R.drawable.f2,str12));
 96                                 }
 97                                 else if (str22.equals(aaa))
 98                                 {
 99                                     lm.add(new MyClass(R.drawable.f3,str12));
100                                 }
101                                 else if (str22.equals(aaaa))
102                                 {
103                                     lm.add(new MyClass(R.drawable.f4,str12));
104                                 }
105                                 else
106                                 {
107                                     Toast.makeText(TsetActivity12.this, "请从a,aa,aaa,aaaa中选择",
108                                             Toast.LENGTH_SHORT).show();
109                                 }
110 
111                                 gridAdapter.notifyDataSetChanged();
112                             }
113                         })
114                         .setNeutralButton("取消",null)
115                         .setPositiveButton("修改", new DialogInterface.OnClickListener() {
116                             @Override
117                             public void onClick(DialogInterface dialog, int which) {
118                                 MyClass myClass = lm.get(position);
119 
120                                 EditText et_1 = (EditText) view1.findViewById(R.id.et_1);
121 
122                                 String str12 = et_1.getText().toString();
123 
124                                 if (str12.length() >= 5) {
125                                     Toast.makeText(TsetActivity12.this, "不符合命名规则,请重新命名",
126                                             Toast.LENGTH_SHORT).show();
127                                     return;
128                                 }
129 
130                                 EditText et_2 = (EditText) view1.findViewById(R.id.et_2);
131 
132                                 String str22 = et_2.getText().toString();
133 
134                                 String a = "a", aa = "aa", aaa = "aaa", aaaa = "aaaa";
135 
136                                 if (str22.equals(a)) {
137                                     if (str12.length() == 0) {
138                                         myClass.setImg(R.drawable.f1);//只修改图片
139                                     } else {
140                                         myClass.setImg(R.drawable.f1);
141                                         myClass.setName(str12);
142                                     }
143                                 } else if (str22.equals(aa)) {
144                                     if (str12.length() == 0) {
145                                         myClass.setImg(R.drawable.f2);
146                                     } else {
147                                         myClass.setImg(R.drawable.f2);
148                                         myClass.setName(str12);
149                                     }
150                                 } else if (str22.equals(aaa)) {
151                                     if (str12.length() == 0) {
152                                         myClass.setImg(R.drawable.f3);
153                                     } else {
154                                         myClass.setImg(R.drawable.f3);
155                                         myClass.setName(str12);
156                                     }
157                                 } else if (str22.equals(aaaa)) {
158                                     if (str12.length() == 0) {
159                                         myClass.setImg(R.drawable.f4);
160                                     } else {
161                                         myClass.setImg(R.drawable.f4);
162                                         myClass.setName(str12);
163                                     }
164                                 } else if (str22.length() == 0) {
165                                     if (str12.length() == 0) {
166                                         Toast.makeText(TsetActivity12.this, "请至少修改一项内容", Toast.LENGTH_SHORT).show();
167                                     } else {
168                                         myClass.setName(str12);
169                                     }
170                                 } else {
171                                     Toast.makeText(TsetActivity12.this, "请从a,aa,aaa,aaaa中选择", Toast.LENGTH_SHORT).show();
172                                 }
173 
174                                 gridAdapter.notifyDataSetChanged();
175                             }
176                         })
177                         .show();
178             }
179         });
180 
181         gv_1.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
182             @Override
183             public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
184                 lm.remove(position);
185                 gridAdapter.notifyDataSetChanged();
186                 return true;
187             }
188         });
189 
190     }
191 
192     class GridAdapter extends BaseAdapter
193     {
194         @Override
195         public int getCount() {
196             return lm.size();
197         }
198 
199         @Override
200         public Object getItem(int position) {
201             return lm.get(position);
202         }
203 
204         @Override
205         public long getItemId(int position) {
206             return 0;
207         }
208 
209         @Override
210         public View getView(int position, View convertView, ViewGroup parent) {
211 
212             MyClass myClass=lm.get(position);
213 
214             if (convertView==null)
215             {
216                 Log.e("TAG", "适配器 getView=" + position);
217                 convertView=View.inflate(TsetActivity12.this,R.layout.activity_main4,null);
218             }
219             ImageView imageView=(ImageView)convertView.findViewById(R.id.iv_1);
220 
221             imageView.setImageResource(myClass.getImg());
222 
223             TextView textView=(TextView)convertView.findViewById(R.id.tv_1);
224 
225             if (myClass.getName().length()>=5||myClass.getName().trim().length()==0)
226             {
227                 Toast.makeText(TsetActivity12.this, myClass.getName()+"不符合命名规则,请重新命名",
228                         Toast.LENGTH_LONG).show();
229 
230                 textView.setText("");
231             }
232             else
233             {
234                 textView.setText(myClass.getName());
235             }
236 
237             return convertView;
238         }
239     }
240 
241     class MyClass
242     {
243         private int img;
244 
245         private String name;
246 
247 
248         public int getImg() {
249             return img;
250         }
251 
252         public void setImg(int img) {
253             this.img = img;
254         }
255 
256         public String getName() {
257             return name;
258         }
259 
260         public void setName(String name) {
261             this.name = name;
262         }
263 
264         public MyClass(int img,String name)
265         {
266             this.img=img;
267             this.name=name;
268         }
269     }
270 }
原文地址:https://www.cnblogs.com/TENOKAWA/p/5519084.html