dialog使用的十分广泛,今天就介绍下包含了listview的dialog简单应用,其实和普通的dialog一样。
1、先布局
首先主布局
android:id="@+id/btn_dialog_2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="中间弹出"
android:background="#ffffff"
android:layout_marginTop="5dp"/>
android:id="@+id/btn_dialog_3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="动画底部弹出"
android:background="#ffffff"
android:layout_marginTop="5dp"/>
android:id="@+id/btn_dialog_4"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="圆角弹窗"
android:background="#ffffff"
android:layout_marginTop="5dp"/>
android:id="@+id/btn_dialog_5"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="圆角弹窗item点击"
android:background="#ffffff"
android:layout_marginTop="5dp"/>
dialog布局
android:layout_width="match_parent"
android:layout_height="match_parent">
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
android:layout_width="match_parent"
android:layout_height="5dp"
android:background="#0ff"/>
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="弹窗"
android:paddingLeft="5dp"
android:paddingTop="10dp"
android:background="#ffff"/>
android:id="@+id/lv_dialog"
android:layout_width="wrap_content"
android:layout_height="200dp"
android:background="#ffff"
android:divider="@null">
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:background="#ffff"
android:paddingBottom="20dp">
android:id="@+id/tv_dialog_1"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:text="确定"
android:gravity="center"
android:padding="10dp"
android:background="@drawable/shape2"
android:textColor="#ffff"
android:textSize="14sp"
android:layout_marginLeft="10dp"
android:layout_marginRight="5dp"
/>
android:id="@+id/tv_dialog_2"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:text="取消"
android:gravity="center"
android:padding="10dp"
android:background="@drawable/shape"
android:textSize="14sp"
android:layout_marginLeft="5dp"
android:layout_marginRight="10dp"/>
item_dialog布局
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp">
android:id="@+id/tv_dialog"
android:layout_width="match_parent"
android:layout_height="50dp"
android:text="弹窗一"
android:paddingLeft="5dp"
android:gravity="center_vertical"/>
android:id="@+id/img_dialog"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/btn_round_not"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_marginRight="5dp"/>
android:visibility="gone"
android:id="@+id/img_dialog_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/btn_round"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_marginRight="5dp"/>
2、adapter主要代码
这个主要是用来判断单选的
MyPosition()这个方法在activity中的item点击事件里调用,myPosition如果为0啥的,或造成item第一行默认选择了
private int myPosition=-1;
public void MyPosition(int position) {
myPosition =position;
}
final MyHodler finalMHodler = mHodler;
final MyHodler finalMHodler1 = mHodler;
if (myPosition==position) {
finalMHodler.mImgDialog.setVisibility(View.GONE);
finalMHodler1.mImgDialog_1.setVisibility(View.VISIBLE);
}else {
finalMHodler.mImgDialog.setVisibility(View.VISIBLE);
finalMHodler1.mImgDialog_1.setVisibility(View.GONE);
}
至于剩下的代码很简单就不贴了
3、eneity
public class Myeneity {
private String name;
private int id;
public Myeneity(String name, int id) {
this.name = name;
this.id = id;
}
public Myeneity(String name) {
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
4、activity
包含listview的dialog,要注意的就是 list.clear();要写不然数据越来越多
final Dialog mDialog = new Dialog(this, R.style.MyDialog);
View view = getLayoutInflater().inflate(R.layout.dialog, null);
mDialog.setContentView(view, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT));
MyAdapter mAdapter = new MyAdapter(this, list);
mLvDialog = (ListView) view.findViewById(R.id.lv_dialog);
TextView mTvDialog_1 = (TextView) view.findViewById(R.id.tv_dialog_1);
TextView mTvDialog_2 = (TextView) view.findViewById(R.id.tv_dialog_2);
mLvDialog.setAdapter(mAdapter);
for (int i = 0; i < 10; i++) {
Myeneity eneity = new Myeneity("测试" + i);
list.add(eneity);
}
mTvDialog_2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mDialog.dismiss();
list.clear();
}
});
mDialog.setContentView(view);
mDialog.setCanceledOnTouchOutside(false);
WindowManager m = getWindowManager();
Display d = m.getDefaultDisplay(); //为获取屏幕宽、高
android.view.WindowManager.LayoutParams p = mDialog.getWindow().getAttributes(); //获取对话框当前的参数值
p.width = (int) (d.getWidth() * 0.75); //宽度设置为屏幕的0.75
mDialog.getWindow().setAttributes(p); //设置生效
mDialog.show();
listview item点击事件
mLvDialog.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView> parent, View view, int position, long id) {
mAdapter.MyPosition(position);
mAdapter.notifyDataSetChanged();
}
});
好了,主要代码就这么多。
转载时请注明出处及相应链接,本文永久地址:https://blog.yayuanzi.com/19011.html
微信打赏
支付宝打赏
感谢您对作者Word的打赏,我们会更加努力! 如果您想成为作者,请点我