Android带参数回传的自定义dialog
1.首先,建立一个属于dialog的style样式:
2.以下为自定义dialog的精华,大家品味以下。0.0
其中的精华为:
结束,谢谢大家观看,打赏个或者点个赞呗亲!
<style name="MessageListDialog" parent="@android:style/Theme.Dialog">
<item name="android:windowIsFloating">true</item>
<item name="android:windowFullscreen">true</item>
<item name="android:windowIsTranslucent">false</item>
<item name="android:windowBackground">@android:color/transparent</item>
<!-- 无标题 -->
<item name="android:windowNoTitle">true</item>
<!-- 背景透明 -->
<item name="android:backgroundDimEnabled">true</item>
<item name="android:textColor">@color/black</item>
</style>
样式大家可以看着酌量增减。2.以下为自定义dialog的精华,大家品味以下。0.0
import android.app.Dialog;
import android.content.Context;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import com.fujitsu.R;
import com.fujitsu.adapter.Dialog_ChooseUserAdapter;
import java.util.ArrayList;
import java.util.HashMap;
/**
* Created by Administrator on 2016/9/29.
*/
public class Dialog_ChooseUser extends Dialog implements AdapterView.OnItemClickListener{
private Context context;
private ListView listview;
private ArrayList<HashMap<String, String>> list = new ArrayList<HashMap<String, String>>();
private OnTextInputFinishedListener mListener; //接口
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
mListener.editInputFinished(list.get(position));
dismiss();
}
public interface OnTextInputFinishedListener{
void editInputFinished(HashMap<String, String> user);
}
public Dialog_ChooseUser(Context context, int theme, OnTextInputFinishedListener mListener) {
super(context, theme);
this.context = context;
this.mListener = mListener;
this.setCancelable(true);
initView();
initData();
}
private void initData() {
HashMap<String, String> map = new HashMap<>();
map.put("name","kate");
map.put("password","1");
HashMap<String, String> map1 = new HashMap<>();
map1.put("name","john");
map1.put("password","1");
HashMap<String, String> map2 = new HashMap<>();
map2.put("name","ming");
map2.put("password","1");
HashMap<String, String> map3 = new HashMap<>();
map3.put("name","hirorin");
map3.put("password","1");
list.add(map);
list.add(map1);
list.add(map2);
list.add(map3);
Dialog_ChooseUserAdapter adapter = new Dialog_ChooseUserAdapter(context, list);
listview.setAdapter(adapter);
listview.setOnItemClickListener(this);
}
private void initView() {
setContentView(R.layout.dialog_chooseuser);
listview = (ListView) findViewById(R.id.dialog_chooseuser_listview);
}
}
里面的Dialog_ChooseUserAdapter相信不用给大家介绍了吧?不知道的可以另行搜索BaseAdapter的使用!欧耶!其中的精华为:
private OnTextInputFinishedListener mListener; //接口 @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { mListener.editInputFinished(list.get(position)); dismiss(); //当点击以后关闭弹出框 } public interface OnTextInputFinishedListener{ void editInputFinished(HashMap<String, String> user); }3.再献上dialog中布局的代码:
<?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">
<LinearLayout
android:layout_width="400dp"
android:layout_height="300dp"
android:orientation="vertical"
android:background="@drawable/shap_dialog_white"
android:gravity="center">
<TextView
android:layout_width="match_parent"
android:layout_height="50dp"
android:text="选择用户"
android:textSize="25sp"
android:gravity="center"
android:textColor="@color/black"/>
<ListView
android:id="@+id/dialog_chooseuser_listview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:listSelector="#00000000">
</ListView>
</LinearLayout>
</LinearLayout>
4.当要调用的时候,直接来这一句: Dialog_ChooseUser dialog = new Dialog_ChooseUser(LoginActivity.this,
R.style.MessageListDialog, new Dialog_ChooseUser.OnTextInputFinishedListener() {
@Override
public void editInputFinished(HashMap<String, String> user) {
etLoginName.setText(user.get("name"));
etPassword.setText(user.get("password"));
}
});// 创建Dialog并设置样式主题
dialog.show();
dialog.getWindow().setGravity(Gravity.CENTER);
注意:顺序是这样的!不然容易出来一个顺序错乱异常! dialog.show();
dialog.getWindow().setGravity(Gravity.CENTER);
其中R.style.MessageListDialog
就是你前面定义的style!结束,谢谢大家观看,打赏个或者点个赞呗亲!