一个简单的自定义dialog嵌套了listview,当点击了listview的条目时,将选中的数据回传到相应的activity里,方便使用。采用的方法是在dialog里定义了一个接口,需要用到数据的activity实现此接口!代码如下:
public class MyDialog extends Dialog {
private Context mContext;
private HashMap<String,String> mHashMap;
private View mView;
private ListView mListView;
private SendData mData;
//定义一个接口,用于回调,这样选中的dialog的数据就可以在相应的activity调用
public interface SendData{
void sendviewdata(String m);
}
public MyDialog(Context context ,SendData data) {
super(context );
this.mContext =context;
this.mData=data;
initView();
}
public void initView(){
LayoutInflater inflater = LayoutInflater.from(mContext);
mView=inflater.inflate(R.layout.mydefine,null);
mListView=(ListView)mView.findViewById(R.id.containerlist);
String[] m = {"pppp","ooo","mmm"};
ArrayAdapter<String> adapter = new ArrayAdapter<String>(mContext,android.R.layout.simple_list_item_1,m);
mListView.setAdapter(adapter);
mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
//此处调用
mData.sendviewdata("ddddddd");
dismiss();
}
});
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(mView);
Window window = getWindow();
WindowManager.LayoutParams wl = window.getAttributes();
wl.x = 0;
wl.y = 0;
wl.gravity = Gravity.CENTER;
window.setAttributes(wl);
}
}