1. 程式人生 > >簡單的自定義dialog並且加入listview

簡單的自定義dialog並且加入listview

一個簡單的自定義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);


    }
}