题目:写一个ListView添加4个Item,item需要复用。 第一个item上显示文字【弹出对话框】,点击弹出对话框,对话框上显示【是否结束考试】,可以选取是或否,【是】就吐司恭喜你考了0分,【否】就吐司继续考试。第二个item上显示文字【吐司】,点击吐司【顶部】两个字到布局的居中至顶部。第三个item上显示文字【飞出底部窗口】,点击后底部飞出带三个图片的窗口,点击每个图片都吐司【点击了图片】。
代码:
布局文件:(多个布局文件)
activity_main.xml:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/linearLayout" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <ListView android:id="@+id/listView" android:layout_width="match_parent" android:layout_height="match_parent"></ListView> </LinearLayout>
item_layout.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="wrap_content" android:layout_margin="10dp" android:textSize="20sp" android:id="@+id/show_tv" android:textColor="@android:color/black" android:layout_height="wrap_content" /> </LinearLayout>
pop_layout.xml:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="bottom" android:orientation="vertical"> <ImageView android:id="@+id/iv1" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="5dp" android:src="@mipmap/ic_launcher" /> <ImageView android:id="@+id/iv2" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="5dp" android:src="@mipmap/ic_launcher" /> <ImageView android:id="@+id/iv3" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="5dp" android:src="@mipmap/ic_launcher" /> </LinearLayout>
toast_layout.xml:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center_horizontal" android:orientation="vertical"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="顶部" android:textSize="20sp" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="顶部" android:textSize="20sp" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="顶部" android:textSize="20sp" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="顶部" android:textSize="20sp" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="顶部" android:textSize="20sp" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="顶部" android:textSize="20sp" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="顶部" android:textSize="20sp" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="顶部" android:textSize="20sp" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="顶部" android:textSize="20sp" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="顶部" android:textSize="20sp" /> </LinearLayout>
创建一个类:适配器:
MyAdapter:
public class MyAdapter extends BaseAdapter { private List<String> list; private Context context; private LayoutInflater inflater; public MyAdapter(List<String> list, Context context) { this.list = list; this.context = context; inflater = LayoutInflater.from(context); } @Override public int getCount() { return list.size(); } @Override public Object getItem(int position) { return list.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder = null; //判断可重复使用的视图是否是空 if (convertView == null) { //初始化视图 convertView = inflater.inflate(R.layout.item_layout, parent, false); holder = new ViewHolder(); holder.showTv = (TextView) convertView.findViewById(R.id.show_tv); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } //设置文本显示内容 holder.showTv.setText(list.get(position)); //返回条目视图 return convertView; } //定义静态内部类 视图持有者 static class ViewHolder { TextView showTv; } }
MainActivity代码:
public class MainActivity extends AppCompatActivity implements View.OnClickListener { private ListView listView; //定义一个数据源 private List<String> list = new ArrayList<>(); private MyAdapter myAdapter; private LinearLayout linearLayout; private PopupWindow popupWindow; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //作为popupWindow展示的 父布局 linearLayout = (LinearLayout) findViewById(R.id.linearLayout); //实例化ListView listView = (ListView) findViewById(R.id.listView); list.add("【弹出对话框】"); list.add("【吐司】"); list.add("【飞出底部窗口】"); list.add("【弹出通知】"); //实例化自定义适配器对象 myAdapter = new MyAdapter(list, this); //设置一个适配器 listView.setAdapter(myAdapter); listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { switch (position) { case 0: //当点击了第一个条目的时候 //定义一个弹出框 AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); builder.setTitle("提示"); builder.setMessage("是否结束考试"); builder.setPositiveButton("是", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(MainActivity.this, "恭喜你考了0分", Toast.LENGTH_SHORT).show(); } }); builder.setNegativeButton("否", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(MainActivity.this, "继续考试", Toast.LENGTH_SHORT).show(); } }); //弹出对话框 builder.show(); break; case 1: //当点击了第二个条目的时候 //创建Toast Toast toast = Toast.makeText(MainActivity.this, "", Toast.LENGTH_LONG); //设置位置 toast.setGravity(Gravity.TOP, 0, 0); //自定义视图 View toastView = LayoutInflater.from(MainActivity.this).inflate(R.layout.toast_layou, null); //设置自定义视图 toast.setView(toastView); //显示土司 toast.show(); break; case 2: //当点击了第三个条目的时候 //自定义PopupWindow视图 View popView = LayoutInflater.from(MainActivity.this).inflate(R.layout.pop_layout, null); //设置监听器 popView.findViewById(R.id.iv1).setOnClickListener(MainActivity.this); popView.findViewById(R.id.iv2).setOnClickListener(MainActivity.this); popView.findViewById(R.id.iv3).setOnClickListener(MainActivity.this); //定义PopupWindow popupWindow = new PopupWindow(popView, ActionBar.LayoutParams.WRAP_CONTENT, ActionBar.LayoutParams.WRAP_CONTENT); //展示弹出 popupWindow.showAtLocation(linearLayout, Gravity.BOTTOM, 0, 0); break; } } }); } @Override public void onClick(View v) { Toast.makeText(this, "点击了图片", Toast.LENGTH_SHORT).show(); //关闭弹出框 popupWindow.dismiss(); } }