1.任务1-选项菜单OptionsMenu
在该应用中,视图根节点为垂直的线性布局,依次放置1个 TextView,显示个人信息;1个 TextView (id 为 tv result),显示选项菜单的选中结果。选项菜单在应用的标题栏右侧,有 3 个点图样或者直接在标题栏上以图标的方式显示点击选项菜单,弹出菜单项。在本例中,仅演示选项菜单的使用方法,功能比较简单,仅在tv_result 上显示被选中菜单项的结果。选项菜单中,“增加”菜单项以图标的形式直接显示在标题栏(或称动作栏、工具栏,“修改”和“删除”项则隐藏在菜单中,通过点击 3 点图样,弹出所隐藏的菜单项

实现

opt_menu.xml
<?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">
<TextView
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="TextView" />
</LinearLayout>
my_main.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/opt_show_id"
android:title="Show ID" />
<item
android:id="@+id/opt_show_name"
android:title="Show Name" />
<item
android:id="@+id/opt_reset"
android:title="Reset" />
</menu>
MainActivity.java
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
TextView tv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.my_main);
tv=findViewById(R.id.textView);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.opt_menu,menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()){
case R.id.opt_show_name:
tv.setText("Name:zxb");
break;
case R.id.opt_show_id:
tv.setText("ID:20211860129");
break;
case R.id.opt_reset:
tv.setText("ID:20211860129,Name:zxb for reset");
break;
}
return super.onOptionsItemSelected(item);
}
}
2任务2-上下文菜单ContextMenu
布局根节点为垂直的LinearLayout,依次有1个TextView显示个人信息;1个ListView,显示字符串数据。长按ListView,会弹出上下文菜单ContextMenu,有2个菜单项“插入”和“删除”。选择“插入”,则在长按的位置插入1项随机整型数据,并更新列表视图;选择“删除”,则将长按位置对应的数据项删除,并更新列表视图。

实现
上下文菜单 XML文件的创建方式与选项菜单基本相同,本任务所使用的上下文菜单ctx_menu.xml具体如代码4-4所示。上下文菜单在逻辑代码上与选项菜单略有不同。上下文菜单不是一个全局的菜单,当用户每次长按所注册的视图,均会触发onCreateContextMenu()重新生成菜单,并且它是需要调用registerForContextMenu()方法对UI对象注册上下文菜单
ctx_menu.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:title="Insert random data"
android:id="@+id/ctx_insert"
/>
<item
android:id="@+id/ctx_delete"
android:title="Delete"
/>
</menu>
my_main.xml
<?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">
<TextView
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="TextView" />
<ListView
android:id="@+id/listView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
MainActivity.java
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.Random;
public class MainActivity extends AppCompatActivity {
TextView tv;
ArrayList<String> list=new ArrayList<>();
ArrayAdapter<String> adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.my_main);
tv=findViewById(R.id.textView);
ListView lv=findViewById(R.id.listView);
for(int i=0;i<10;i++){
String item=String.format("Item%2d",i);
list.add(item);
}
adapter=new ArrayAdapter<>(this,android.R.layout.simple_list_item_1,list);
lv.setAdapter(adapter);
registerForContextMenu(lv);
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
getMenuInflater().inflate(R.menu.ctx_menu,menu);
}
@Override
public boolean onContextItemSelected(@NonNull MenuItem item) {
AdapterView.AdapterContextMenuInfo menuInfo = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
int pos=menuInfo.position;
switch (item.getItemId()){
case R.id.ctx_insert:
String data=String.format("Insert:item%03d",new Random().nextInt(1000));
list.add(pos,data);
adapter.notifyDataSetChanged();
break;
case R.id.ctx_delete:
list.remove(pos);
adapter.notifyDataSetChanged();
break;
}
return super.onContextItemSelected(item);
}
}
3.任务3-对话框AlertDialog
在
主平面布置图,有一个按钮,当用户单击该按钮,对话框中显示了标题和消息
AlertDialog(警报对话框)
该消息显示您的姓名和学生编号,AlertDialog中有2个按钮,一个表示“OK”,另一个表示”取消“

实现
my_main.xml
<?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">
<TextView
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Your name and ID" />
<Button
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="ALERT DIALOG" />
</LinearLayout>
MianActivity.java
import androidx.annotation.NonNull;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.Random;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.my_main);
findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
getDialog().show();
}
});
}
private AlertDialog getDialog(){
AlertDialog.Builder bl=new AlertDialog.Builder(this);
bl.setTitle("Dialog Title");
bl.setMessage("Your name and ID");
bl.setNegativeButton("Cancel",null);
bl.setPositiveButton("OK",null);
AlertDialog alertDialog=bl.create();
return alertDialog;
}
}
4.任务4-自定义对话框AlertDialog
在中创建仅包含一个TextView的应用,当用户长时间单击文本视图时,显示AlertDialog对话框,
AlertDialog具有自定义视图,其中包含EditText,以及EditText显示,用户可以在EditText中编辑文本,当用户单击“确定”按钮时,TextView通过EditText更新文本。当用户单击“取消”按钮时,否更新发生。

实现
my_main.xml
<?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">
<TextView
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Your name and ID" />
</LinearLayout>
dialog_view.xml
<?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:id="@+id/dialog_view_et"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="textPersonName"
android:text="" />
</LinearLayout>
MainActivity.java
import androidx.annotation.NonNull;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.Random;
public class MainActivity extends AppCompatActivity {
TextView tv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.my_main);
tv=findViewById(R.id.textView);
tv.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
showDialog();
return true;
}
});
}
private void showDialog(){
AlertDialog.Builder bl=new AlertDialog.Builder(this);
bl.setTitle("Edit the TextView");
View v= LayoutInflater.from(this).inflate(R.layout.dialog_view,null,false);
final EditText et=v.findViewById(R.id.dialog_view_et);
et.setText(tv.getText());
bl.setView(v);
bl.setNegativeButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
tv.setText(et.getText());
}
});
bl.setPositiveButton("Cancel",null);
bl.create().show();
}
}
5.任务5-自定义对话框
创建1个按钮和1个文本视图的应用程序
主要布局:点击弹出一个AlertDialog,其中包含多个选择
当出现以下情况时,用户单击“确定”按钮,TextView显示所选项目
当用户单击“取消”按钮,TextView显示空字符串
AlertDialog的标题显示您的姓名和学生编号

实现
my_main.xml
<?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">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Your name and ID" />
<TextView
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="TextView" />
<Button
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="MULTIPLE SELECTION" />
</LinearLayout>
MainActivity.java
import androidx.annotation.NonNull;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.Random;
public class MainActivity extends AppCompatActivity {
TextView tv;
boolean[] checkTable;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.my_main);
tv=findViewById(R.id.textView);
final String[] hobbies=new String[]{"Running","Swimming","BasketBall"};
checkTable =new boolean[hobbies.length];
findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showDialog(hobbies);
}
});
}
private void showDialog(final String[] hobbies){
AlertDialog.Builder bl=new AlertDialog.Builder(this);
bl.setTitle("Select data");
bl.setMultiChoiceItems(hobbies, checkTable, new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
checkTable[which]=isChecked;
}
});
bl.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
tv.setText("");
}
});
bl.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
ArrayList<String> list=new ArrayList<>();
for(int i=0;i<hobbies.length;i++){
if(checkTable[i]){
list.add(hobbies[i]);
}
}
tv.setText(list.toString());
}
});
bl.create().show();
}
}
BigTask3
编写一个程序,1个TextView(用于显示学号姓名)、1个ListView。ListView是风景点的地点名称和风景图片(适配器需要改写)。在所描述功能的基础上,对ListView增加上下文菜单(修改、删除、新增三个功能),修改功能支持对风景地点改名称和图片重选(弹出的对话框中有图文并茂的GridView),并且改完名称后,ListView的名称也会被修改;删除功能则对该风景删除,ListView也会相应更新;新增功能能在弹出的对话框中选择GridView显示的风景进行添加。选项菜单的功能则为:增加风景、重置两个功能。重置功能则将ListView中的风景列表恢复成程序启动时的状态。修改和新增功能弹出的对话框,第一行为EditText和ImageView,第二行为GridView,并有确定和取消按钮


实现
grid_row_view.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
>
<ImageView
android:id="@+id/row_view_iv"
android:layout_width="80dp"
android:layout_height="80dp"
android:layout_gravity="center"
/>
<TextView
android:id="@+id/row_view_tv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="" />
</LinearLayout>
dialog_view.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<EditText
android:id="@+id/editText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="2"
android:ems="10"
android:hint="input the name"
android:inputType="textPersonName"
android:text="" />
<ImageView
android:id="@+id/imageView"
android:layout_width="120dp"
android:layout_height="120dp"
android:layout_marginRight="10dp"
android:layout_weight="3"
app:srcCompat="@mipmap/ic_launcher" />
</LinearLayout>
<GridView
android:id="@+id/gridView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:numColumns="2"
android:stretchMode="columnWidth" />
</LinearLayout>
list_row_view.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:gravity="center"
android:padding="5dp"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/row_view_iv"
android:layout_width="60dp"
android:layout_height="60dp" />
<TextView
android:id="@+id/row_view_tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:layout_marginLeft="10dp"
android:text="TextView" />
</LinearLayout>
my_mian.xml
<?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">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="20211860129 郑小波" />
<ListView
android:id="@+id/listView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
Landscape.java
public class Landscape {
private String name;
private int img;
public Landscape(String name, int img){
this.name = name;
this.img = img;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getImg() {
return img;
}
public void setImg(int img) {
this.img = img;
}
}
Dialog.java
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.AdapterView;
import android.widget.EditText;
import android.widget.GridView;
import android.widget.ImageView;
import java.util.ArrayList;
public class Dialog {
private Context context;
private String title;
public interface OnDialogSubmitListener{
void onSubmit(Landscape updatedLandscape);
}
public Dialog(Context context, String title){
this.context = context;
this.title = title;
}
public void showDialog(Landscape landscape, final OnDialogSubmitListener l){
AlertDialog.Builder bl = new AlertDialog.Builder(context);
bl.setTitle(title);
View v = LayoutInflater.from(context).inflate(R.layout.dialog_view,null,false);
final EditText et = v.findViewById(R.id.editText);
final ImageView img = v.findViewById(R.id.imageView);
GridView gv = v.findViewById(R.id.gridView);
if(landscape == null){
landscape = new Landscape("",R.mipmap.ic_launcher);
}
et.setText(landscape.getName());
img.setImageResource(landscape.getImg());
img.setTag(landscape.getImg());
final ArrayList<Landscape> allData = LandscapeDateCenter.getData();
LandscapeAdapter adapter = new LandscapeAdapter(context, allData, 2);
gv.setAdapter(adapter);
gv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
Landscape index = LandscapeDateCenter.getData().get(i);
et.setText(index.getName());
img.setImageResource(index.getImg());
img.setTag(index.getImg());
}
});
bl.setView(v);
bl.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
String name = et.getText().toString();
int picId = (int) img.getTag();
Landscape updatedLandscape = new Landscape(name, picId);
if(l != null){
l.onSubmit(updatedLandscape);
}
}
});
bl.setNegativeButton("Cancel",null);
bl.create().show();
}
}
LandscapeAdapter.java
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import java.util.ArrayList;
public class LandscapeAdapter extends ArrayAdapter<Landscape> {
private Context context;
private ArrayList<Landscape> list;
private int type = 1;
public LandscapeAdapter(Context context, ArrayList<Landscape> list){
super(context, android.R.layout.simple_list_item_1, list);
this.context = context;
this.list = list;
}
public LandscapeAdapter(Context context, ArrayList<Landscape> list, int type){
super(context, android.R.layout.simple_list_item_1, list);
this.context = context;
this.list = list;
this.type = type;
}
@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
View v;
if(type == 1) {
v = LayoutInflater.from(context).inflate(R.layout.list_row_view, null, false);
} else{
v = LayoutInflater.from(context).inflate(R.layout.grid_row_view, null, false);
}
TextView tv = v.findViewById(R.id.row_view_tv);
ImageView img = v.findViewById(R.id.row_view_iv);
tv.setText(list.get(position).getName());
img.setImageResource(list.get(position).getImg());
return v;
}
}
LandscapeDateCenter.java
import java.util.ArrayList;
public class LandscapeDateCenter {
private static ArrayList<Landscape> list;
public static ArrayList<Landscape> getData(){
if(list != null){
return list;
} else {
list = new ArrayList<>();
list.add(new Landscape("Daluo Mountain", R.drawable.da_luo_shan));
list.add(new Landscape("Great Wall", R.drawable.great_wall));
list.add(new Landscape("Lingyin Temple", R.drawable.ling_yin_temple));
list.add(new Landscape("Nanxi River", R.drawable.nan_xi_river));
list.add(new Landscape("Olympic Sports Center", R.drawable.olympic_sports_center));
list.add(new Landscape("Qianjinag CBD", R.drawable.qian_jiang_cbd));
list.add(new Landscape("The Imperial Palace", R.drawable.the_imperial_palace));
list.add(new Landscape("West Lake", R.drawable.west_lake));
list.add(new Landscape("Yandang Mountain", R.drawable.yan_dang_shan));
return list;
}
}
}
MainActivity.java
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
ArrayList<Landscape> list = new ArrayList<>();
ListView lv ;
LandscapeAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.my_main);
lv = findViewById(R.id.listView);
adapter = new LandscapeAdapter(this,list);
lv.setAdapter(adapter);
list.add(new Landscape("Daluo Mountain", R.drawable.da_luo_shan));
list.add(new Landscape("Qianjiang CBD", R.drawable.qian_jiang_cbd));
registerForContextMenu(lv);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.opt_menu,menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()){
case R.id.opt_add:
addData();
break;
case R.id.opt_reset:
reset();
break;
}
return super.onOptionsItemSelected(item);
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
getMenuInflater().inflate(R.menu.ctx_menu,menu);
super.onCreateContextMenu(menu, v, menuInfo);
}
@Override
public boolean onContextItemSelected(@NonNull MenuItem item) {
ContextMenu.ContextMenuInfo menuInfo = item.getMenuInfo();
AdapterView.AdapterContextMenuInfo adapterContextMenuInfo = (AdapterView.AdapterContextMenuInfo)menuInfo;
final int position = adapterContextMenuInfo.position;
switch (item.getItemId()){
case R.id.ctx_add:
addData();
break;
case R.id.ctx_modify:
modify(position);
break;
case R.id.ctx_delete:
list.remove(position);
adapter.notifyDataSetChanged();
break;
}
return super.onContextItemSelected(item);
}
private void modify(int position) {
final Landscape landscape = list.get(position);
new Dialog(this,"Modify Data").showDialog(landscape, new Dialog.OnDialogSubmitListener() {
@Override
public void onSubmit(Landscape updatedLandscape) {
landscape.setName(updatedLandscape.getName());
landscape.setImg(updatedLandscape.getImg());
adapter.notifyDataSetChanged();
}
});
}
public void reset(){
list.clear();
list.add(new Landscape("Daluo Mountain", R.drawable.da_luo_shan));
list.add(new Landscape("Qianjiang CBD", R.drawable.qian_jiang_cbd));
adapter.notifyDataSetChanged();
}
public void addData(){
new Dialog(this,"Create Data").showDialog(null, new Dialog.OnDialogSubmitListener() {
@Override
public void onSubmit(Landscape updatedLandscape) {
list.add(updatedLandscape);
adapter.notifyDataSetChanged();
}
});
}
}

272

被折叠的 条评论
为什么被折叠?



