簡單的自定義dialog並且加入listview
阿新 • • 發佈:2018-12-17
一個簡單的自定義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); } }