private Dialog createFriendDialog(Context context){
View view = POIItemActivity.this.getLayoutInflater().inflate(R.layout.poi_f_dialog, null);
inflater = POIItemActivity.this.getLayoutInflater();
fDialog = new AlertDialog.Builder(context);
fDialog.setView(view);
fDialog.setIcon(R.drawable.logo);
fDialog.setTitle("选择好友");
layout = (LinearLayout) view.findViewById(R.id.ll_poi_f_content);
showFriendMes();
fDialog.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
fDialog.create().dismiss();
}
});
return fDialog.create();
}
显示二级列表的函数:
private void showFriendMes() {
layout.removeAllViews();
List<Team> data = Memory.getFriendData();
synchronized (data) {
for(final Team team : data){
//组视图
LinearLayout teamLayout = (LinearLayout) inflater.inflate(R.layout.poi_f_dialog_team, null);
RelativeLayout itemLayout = (RelativeLayout) teamLayout.getChildAt(0);
//展开/收缩 图标
final ImageView icon = (ImageView) itemLayout.getChildAt(1);
LinearLayout itemTeamLayout = (LinearLayout) itemLayout.getChildAt(0);
//组名
TextView teamName = (TextView) itemTeamLayout.getChildAt(0);
teamName.setText(team.getCategoryName());
//组成员数
TextView teamNumber = (TextView) itemTeamLayout.getChildAt(1);
teamNumber.setText(team.getOnlineCount() + "/" + team.getMemberCount());
teamLayout.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
LinearLayout parent = (LinearLayout) v;
View view = parent.getChildAt(1);
int show = view.getVisibility() == View.VISIBLE ? View.GONE : View.VISIBLE;
view.setVisibility(show);
icon.setImageResource(show == View.VISIBLE ? R.drawable.scroll_to_previous : R.drawable.scroll_to_next);
team.setStatus(show == View.VISIBLE ? 1 : 0);
}
});
LinearLayout teamItem = (LinearLayout) teamLayout.getChildAt(1);
if(team.getStatus() == 1){
teamItem.setVisibility(View.VISIBLE);
}else{
teamItem.setVisibility(View.GONE);
}
teamItem.removeAllViews();
for(final User user : team.getFriendList()){
//孩子视图
LinearLayout userLayout = (LinearLayout) inflater.inflate(R.layout.poi_f_dialog_person, null);
userLayout.setTag(R.string.poi_friends,user);
LinearLayout ll = (LinearLayout) userLayout.getChildAt(0);
//头像
ImageView ivHeader = (ImageView) ll.findViewById(R.id.iv_poi_f_dialog_header);
ivHeader.setImageResource(ImageUtil.getAvatarId(POIItemActivity.this, user.getPicID(), (byte)user.getStatus()));
RelativeLayout rlLayout = (RelativeLayout) ll.getChildAt(1);
//昵称
TextView tvNick = (TextView) rlLayout.getChildAt(0);
// TextView tvNick = (TextView) rlLayout.findViewById(R.id.tv_poi_f_dialog_nick);
tvNick.setText(StringUtil.getDisplayStatusAndName(user.getStatus(), user.getNickName(), user.getRemarkName()));
//名称
TextView tvName = (TextView) rlLayout.findViewById(R.id.tv_poi_f_dialog_name);
tvName.setText(user.getUserName());
userLayout.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
User selectUser = (User) v.getTag(R.string.poi_friends);
if(selectUser.getStatus() == 0){
Toast.makeText(POIItemActivity.this, "离线状态不能发送", Toast.LENGTH_SHORT).show();
}else{
}
}
});
teamItem.addView(userLayout);
}
layout.addView(teamLayout);
}
}
}
poi_f_dialog_team.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<RelativeLayout
android:layout_marginTop="5dp"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="15dp">
<LinearLayout
android:layout_alignParentLeft="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp">
<TextView
android:id="@+id/tv_poi_f_dialog_team"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</TextView>
<TextView
android:id="@+id/tv_poi_f_dialog_number"
android:layout_marginLeft="5dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</TextView>
</LinearLayout>
<ImageView
android:id="@+id/iv_poi_f_dialog_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_marginRight="5dp"
android:layout_centerVertical="true"
android:src="@drawable/scroll_to_next"
android:layout_marginTop="5dp">
</ImageView>
</RelativeLayout>
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
</LinearLayout>
<ImageView
android:background="#ADADAD"
android:layout_marginTop="5dp"
android:layout_width="fill_parent"
android:layout_height="1dp"/>
</LinearLayout>
poi_f_dialog_person.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="3dp"
android:orientation="horizontal">
<ImageView
android:id="@+id/iv_poi_f_dialog_header"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="40dp">
</ImageView>
<RelativeLayout
android:id="@+id/rl_poi_f_dialog"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp">
<TextView
android:id="@+id/tv_poi_f_dialog_nick"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</TextView>
<TextView
android:id="@+id/tv_poi_f_dialog_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/tv_poi_f_dialog_nick">
</TextView>
</RelativeLayout>
</LinearLayout>
<View
android:background="#ADADAD"
android:layout_marginTop="3dp"
android:layout_width="fill_parent"
android:layout_height="1dp">
</View>
</LinearLayout>
poi_f_dialog.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<ScrollView
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
android:id="@+id/ll_poi_f_content"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
</LinearLayout>
</ScrollView>
</LinearLayout>
- 大小: 12.1 KB
分享到:
相关推荐
Android 利用dialog弹出 二级下拉列表 ExpandableListView+DialogLI。 利用dialog和ExpandableListView实现的一个弹出二级菜单项,并进行了封装,可在activity和fragment中随意调用。简单实用,兼容性好。...二级列表
在Android应用开发中,二级列表的联动功能是一个常见的交互设计,尤其在电商、外卖等应用中,用户通过一级分类选择大类,然后二级列表展示对应类目下的具体商品或服务。这种设计能有效地帮助用户快速定位到他们感...
Two Step Picker Dialog For Android Description Two step picker dialog for Android that helps you easily pick nested data on android. Usage To use two step picker dialog you must add it as a ...
在Android开发中,Dialog是一种非常重要的组件,它用于在用户界面中显示临时的、轻量级的窗口,通常用于向用户展示警告、确认信息或提供简单的选择操作。本教程将详细讲解Android Dialog的基本用法,包括创建、...
`DialogFragment`是一个轻量级的`Fragment`,可以在不管理生命周期的情况下显示`Dialog`。创建`DialogFragment`需要覆盖`onCreateDialog()`方法,如下所示: ```java public class MyDialogFragment extends ...
这可能是一个嵌套的列表,其中每个父组代表一级列表项,每个子列表代表二级列表项。根据实际需求,你可以使用`ArrayList`、`HashMap`或其他数据结构来组织这些数据。 然后,我们将适配器与`ExpandableListView`关联...
这个“Android高级应用源码-自定义列表选择Dialog,适用网络请求数据.zip”压缩包提供了关于如何创建一个自定义的列表选择Dialog,并结合网络请求数据的示例代码。下面将详细解析这个主题。 一、自定义列表选择...
在Android开发中,ProgressDialog是一个非常常用的组件,它用于在用户执行长时间操作时显示一个带有进度条的对话框,提供一种良好的用户体验,让用户知道系统正在后台处理任务。在本篇文章中,我们将深入探讨...
当用户在一级列表(省份)中做出选择后,二级列表(城市)会根据所选省份动态更新,同理,当城市被选定,三级列表(区县)也会随之更新。 这个"Android(省市区三级联动Dialog)Demo"是一个实际的应用示例,开发者...
总的来说,"利用dialog弹出二级下拉列表 ExpandableListView+DialogLI"是一种有效且灵活的实现方式,它结合了`Dialog`的弹窗功能和`ExpandableListView`的多级展示特性,为Android应用提供了丰富的交互体验。...
总的来说,"基于PopupWindow和RecycleView仿美团二级列表Demo"是一个实用的Android开发教程,它涵盖了UI设计、事件处理和性能优化等多个重要方面。开发者可以通过这个Demo学习到如何在Android应用中创建功能丰富且...
【Android仿eleme点餐页面二级联动列表】的知识点解析 在Android开发中,二级联动列表是一种常见的交互设计,尤其在电商、外卖等应用中,用于实现高效的分类浏览和选择。这种设计允许用户通过左右两个独立但联动的...
Dialog通常用于向用户展示临时信息或需要用户做出决策的情况,而Toast则用于轻量级的通知,它们都会在一段时间后自动消失。本篇将详细介绍如何在Android中利用布局文件自定义这两种组件。 一、自定义Dialog 1. ...
在Android开发中,Dialog是一种非常重要的组件,它用于在用户界面中显示临时的、轻量级的窗口,通常用于向用户展示警告、确认信息或提供简单的选择操作。"android_dialog"是一个示例项目,旨在演示如何在Android应用...
- 当一级或二级选择发生变化时,需要动态更新下级的ListView或RecyclerView,展示对应的市或区列表。这通常涉及到对Adapter的notifyDataSetChanged()方法调用。 8. **数据绑定**: - 使用Android的Data Binding库...
在Android开发中,Dialog是一种非常常见的UI组件,用于向用户展示一些临时性的信息或需要用户进行选择的操作。本文将详细讲解如何在Android中使用Dialog,包括各种类型对话框的创建和自定义。 首先,我们来看如何...
在Android开发中,"PopupWindows省市区二级三级联动"是一个常见的需求,特别是在处理地址选择时。PopupWindow是一种轻量级的弹出窗口,它可以显示在屏幕的任何位置,相比于Dialog,它更加灵活,不会阻塞用户对背景...
首先,Dialog是Android系统提供的一种轻量级窗口,通常用于在用户界面中显示临时信息或进行简单的用户交互。它不会占据整个屏幕,而是浮现在当前活动(Activity)之上。自定义Dialog允许我们摆脱系统预设样式,设计...
《Android高级应用:HerilyAlertDialog完全自定义Dialog详解》 在Android开发中,Dialog作为一种常见的交互元素,用于向用户展示信息或进行简单的交互操作。然而,Android系统默认提供的Dialog样式有限,无法满足...
### Android对话框(Dialog)详解与应用 #### 一、引言 在Android开发过程中,对话框(Dialog)是一种非常常见的UI组件,用于呈现简短的信息或请求用户输入信息。本篇文章旨在帮助初学者深入理解Android中的对话框机制...