DialogFragment
来源:互联网 发布:falcon猎鹰手表知乎 编辑:程序博客网 时间:2024/05/19 04:29
import android.annotation.TargetApi;
import android.app.Dialog;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.WindowManager;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;
import com.kocla.marketresource.R;
/**
* 1.
* final V4ListDialogFragment.OnItemClickListener itemClickListener = new V4ListDialogFragment.OnItemClickListener() {
*
* @author admin
* @Override public void onItemClick(int position) {
* Toast.makeText(MainActivity.this, ""+position, Toast.LENGTH_LONG).show();
* }
* };
* 2.
* if(dialogFragment == null){
* dialogFragment = new V4ListDialogFragment(data,itemClickListener);
* 参考:http://blog.csdn.net/lmj623565791/article/details/37815413/
*/
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
public class V4ListDialogFragment extends android.support.v4.app.DialogFragment {
LayoutInflater inflater;
public V4ListDialogFragment() {
}
public V4ListDialogFragment(String[] data,OnItemClickListener onItemClickListener) {
Bundle bundle = new Bundle();
bundle.putStringArray("data", data);
setArguments(bundle);
this.onItemClickListener = onItemClickListener;
}
ListView lv_dialog;
private OnItemClickListener onItemClickListener;
public OnItemClickListener getOnItemClickListener() {
return onItemClickListener;
}
public void setOnItemClickListener(OnItemClickListener onItemClickListener) {
this.onItemClickListener = onItemClickListener;
}
public interface OnItemClickListener {
public AdapterView<?> parent = null;
public View view = null;
public int position = -1;
public long id = 0;
public void onItemClick(int position);
/**
* @param parent 长按parent(ListView) 弹出 V4ListDialogFragment,
* @param view 对应ListView,不是V4ListDialogFragment的listview
* @param position 对应ListView,不是V4ListDialogFragment的listview
* @param id 对应ListView,不是V4ListDialogFragment的listview
*/
//public void onItemClick(AdapterView<?> parent, View view, int position, long id,int clickItem) ;
}
/**
* setStyle(),可以自定义样式
* @param savedInstanceState
*/
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setStyle(STYLE_NO_TITLE,R.style.custdialog);
}
/**
* 覆写Fragment类的onCreateView方法,在DialogFragment的show方法执行之后, 系统会调用这个回调方法。
*/
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
this.inflater = inflater;
View view = inflater.inflate(R.layout.dialog_fragment_list, container,false);
lv_dialog = (ListView) view.findViewById(R.id.lv_dialog);
String[] data = getArguments().getStringArray("data");
ListAdapter adapter = new ListAdapter(data);
lv_dialog.setAdapter(adapter);
//if(lv_dialog.getOnItemLongClickListener()==null){
lv_dialog.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if (onItemClickListener != null) {
//onItemClickListener.onItemClick(onItemClickListener.parent,onItemClickListener.view,onItemClickListener.position,onItemClickListener.id,position);
onItemClickListener.onItemClick(position);
}
dismiss();
}
});
//}
Log.i("XXX", "onCreateView后调用");
return view;
}
/**
* 覆写Fragment类的onCreateDialog方法,在DialogFragment的show方法执行之后, 系统会调用这个回调方法。
*/
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
//Dialog dialog = new Dialog(getActivity(),getTheme());
Dialog dialog = super.onCreateDialog(savedInstanceState);
WindowManager.LayoutParams params = dialog.getWindow().getAttributes();
params.width = 200;
dialog.getWindow().setAttributes(params);
//STYLE_NO_TITLE
//STYLE_NO_FRAME
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);// 去掉标题
//STYLE_NO_INPUT
//dialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);
return dialog;
}
/**
* DialogFragment 通过 xmL 是无法设置大小的
* 经过测试 只能在 onResume 方法中,进行设置,代码如下:
*/
public void onResume() {
super.onResume();
getDialog().getWindow().setLayout(750, WindowManager.LayoutParams.WRAP_CONTENT);
}
public void show() {
//this.onItemClickListener = itemClickListener;
Log.i("XXX", "show先调用");
show(getFragmentManager(), V4ListDialogFragment.class.getSimpleName());
}
class ListAdapter extends BaseAdapter {
String[] data;
public ListAdapter(String[] data) {
this.data = data;
}
@Override
public int getCount() {
return data == null ? 0 : data.length;
}
@Override
public Object getItem(int position) {
return data[position];
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
holder = new ViewHolder();
convertView = inflater.inflate(R.layout.dialog_fragment_item, null);
holder.tv_item = (TextView) convertView
.findViewById(R.id.dialog_item);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.tv_item.setText(data[position]);
return convertView;
}
}
static class ViewHolder {
TextView tv_item;
}
}
import android.app.Dialog;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.WindowManager;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;
import com.kocla.marketresource.R;
/**
* 1.
* final V4ListDialogFragment.OnItemClickListener itemClickListener = new V4ListDialogFragment.OnItemClickListener() {
*
* @author admin
* @Override public void onItemClick(int position) {
* Toast.makeText(MainActivity.this, ""+position, Toast.LENGTH_LONG).show();
* }
* };
* 2.
* if(dialogFragment == null){
* dialogFragment = new V4ListDialogFragment(data,itemClickListener);
* }
* dialogFragment.show();
* <p/>* 参考:http://blog.csdn.net/lmj623565791/article/details/37815413/
*/
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
public class V4ListDialogFragment extends android.support.v4.app.DialogFragment {
LayoutInflater inflater;
public V4ListDialogFragment() {
}
public V4ListDialogFragment(String[] data,OnItemClickListener onItemClickListener) {
Bundle bundle = new Bundle();
bundle.putStringArray("data", data);
setArguments(bundle);
this.onItemClickListener = onItemClickListener;
}
ListView lv_dialog;
private OnItemClickListener onItemClickListener;
public OnItemClickListener getOnItemClickListener() {
return onItemClickListener;
}
public void setOnItemClickListener(OnItemClickListener onItemClickListener) {
this.onItemClickListener = onItemClickListener;
}
public interface OnItemClickListener {
public AdapterView<?> parent = null;
public View view = null;
public int position = -1;
public long id = 0;
public void onItemClick(int position);
/**
* @param parent 长按parent(ListView) 弹出 V4ListDialogFragment,
* @param view 对应ListView,不是V4ListDialogFragment的listview
* @param position 对应ListView,不是V4ListDialogFragment的listview
* @param id 对应ListView,不是V4ListDialogFragment的listview
*/
//public void onItemClick(AdapterView<?> parent, View view, int position, long id,int clickItem) ;
}
/**
* setStyle(),可以自定义样式
* @param savedInstanceState
*/
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setStyle(STYLE_NO_TITLE,R.style.custdialog);
}
/**
* 覆写Fragment类的onCreateView方法,在DialogFragment的show方法执行之后, 系统会调用这个回调方法。
*/
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
this.inflater = inflater;
View view = inflater.inflate(R.layout.dialog_fragment_list, container,false);
lv_dialog = (ListView) view.findViewById(R.id.lv_dialog);
String[] data = getArguments().getStringArray("data");
ListAdapter adapter = new ListAdapter(data);
lv_dialog.setAdapter(adapter);
//if(lv_dialog.getOnItemLongClickListener()==null){
lv_dialog.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if (onItemClickListener != null) {
//onItemClickListener.onItemClick(onItemClickListener.parent,onItemClickListener.view,onItemClickListener.position,onItemClickListener.id,position);
onItemClickListener.onItemClick(position);
}
dismiss();
}
});
//}
Log.i("XXX", "onCreateView后调用");
return view;
}
/**
* 覆写Fragment类的onCreateDialog方法,在DialogFragment的show方法执行之后, 系统会调用这个回调方法。
*/
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
//Dialog dialog = new Dialog(getActivity(),getTheme());
Dialog dialog = super.onCreateDialog(savedInstanceState);
WindowManager.LayoutParams params = dialog.getWindow().getAttributes();
params.width = 200;
dialog.getWindow().setAttributes(params);
//STYLE_NO_TITLE
//STYLE_NO_FRAME
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);// 去掉标题
//STYLE_NO_INPUT
//dialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);
return dialog;
}
/**
* DialogFragment 通过 xmL 是无法设置大小的
* 经过测试 只能在 onResume 方法中,进行设置,代码如下:
*/
public void onResume() {
super.onResume();
getDialog().getWindow().setLayout(750, WindowManager.LayoutParams.WRAP_CONTENT);
}
public void show() {
//this.onItemClickListener = itemClickListener;
Log.i("XXX", "show先调用");
show(getFragmentManager(), V4ListDialogFragment.class.getSimpleName());
}
class ListAdapter extends BaseAdapter {
String[] data;
public ListAdapter(String[] data) {
this.data = data;
}
@Override
public int getCount() {
return data == null ? 0 : data.length;
}
@Override
public Object getItem(int position) {
return data[position];
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
holder = new ViewHolder();
convertView = inflater.inflate(R.layout.dialog_fragment_item, null);
holder.tv_item = (TextView) convertView
.findViewById(R.id.dialog_item);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.tv_item.setText(data[position]);
return convertView;
}
}
static class ViewHolder {
TextView tv_item;
}
}
0 0
- DialogFragment
- dialogFragment
- DialogFragment
- DialogFragment
- DialogFragment
- DialogFragment
- DialogFragment
- DialogFragment
- DialogFragment
- DialogFragment
- dialogFragment
- DialogFragment
- DialogFragment
- DialogFragment
- Android DialogFragment
- 使用DialogFragment
- DialogFragment学习
- dialogfragment使用
- Python学习-第一天
- Android 图片缓存--DisplayImageOptions
- 获取静态TableView选中的cell来执行相应操作
- iOS开发UI篇 -- 0326应用管理APP
- 差网络模拟工具---clumsy
- DialogFragment
- JAVA实战2——近似画圆
- Shell 基本命令
- nmap端口探测原理初探
- nodejs获取参数
- hdu 2276(矩阵快速幂)
- gridx的使用
- 外观模式
- GUET-ACM-#1110-A+B增强版