来自 RecyclerView 的 DialogFragment
DialogFragment From RecyclerView
现在我有新问题.....我不知道如何初始化 recyclerview 中的 dialogfragment 和片段中的 recyclerview,所以谁知道怎么做?
片段代码:
public View onCreateView( LayoutInflater inflater, ViewGroup container3,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View v =inflater.inflate(R.layout.fragment_one_day_tasks,container3,false);
final View vd =inflater.inflate(R.layout.dialogod,null);
TextView textView= (TextView) v.findViewById(R.id.ActiveMenu);
TextView textView1= (TextView) v.findViewById(R.id.Alert);
database = new Database(v.getContext());
mId = database.getLastIdOD();
if(mId>=1) {
oneDayList = database.getOneDayList(1);
}
database.close();
//dlg1 = new DialogFragment();
//GridView gridView = (GridView) v.findViewById(R.id.gridViewActiveOd);
RecyclerView recyclerView = (RecyclerView) v.findViewById(R.id.gridResc);
if(0<mId){
recyclerView.setLayoutManager(new GridAutofitLayoutManager(v.getContext(),350));
recyclerView.setAdapter(new adapterRecylcerViewGridODN(v.getContext(),oneDayList,inflater));
/* gridView.setAdapter(new GridOdAdapter(v.getContext(),oneDayList));
gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
final int position, long id) {
tapOnAlert(vd,position);
}
});*/
}else{
textView1.setText("You Haven't got any Active Tasks !");
}
FloatingActionButton fab = (FloatingActionButton) v.findViewById(R.id.fabCreateOd);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
getActivity().finish();
Intent intent = new Intent(getActivity().getApplicationContext(),CreateOneDayNotif.class);
intent.putExtra("mId",1 + database.getLastIdOD());
startActivity(intent);
Snackbar.make(view, "New Task", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
});
return v;
}
RecyclerView 适配器代码:
public void onBindViewHolder(SimpleViewHolder holder, final int position) {
holder.title.setText(mItems.get(position).getTitle());
datecount = new Datecount(mItems.get(position).getDateAndTime());
long minute = datecount.getMinuteInt();
long hour=datecount.getHourInt();
long day=datecount.getDayInt();
long year=datecount.getYearInt();
long month=datecount.getMonthInt();
holder.dataAtime.setText("On date: " + day+"/"+month+"/"+year+ " On time: "+hour+":"+minute);
int iconResId = mContext.getResources().getIdentifier(mItems.get(position).getIcon(), "drawable", mContext.getPackageName());
holder.image.setImageResource(iconResId);
GradientDrawable bgShape = (GradientDrawable) holder.circle.getDrawable();
bgShape.setColor(Color.parseColor(mItems.get(position).getColour()));
holder.mView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//I want to put here dialog.show
//I want to put here dialog.show
}
});
和DialogFragment代码:
public class DialogFragmentOd extends DialogFragment {
boolean isFabOpen;
Animation fab_open,fab_close,rotate_forward,rotate_backward;
List<OneDayTD> oneDayList;
int position;
Database database;
public static DialogFragmentOd getInstance() {
DialogFragmentOd dialog = new DialogFragmentOd();
//Bundle arguments = new Bundle();
//arguments.putParcelable(Person.class.getName(), person);
//dialog.setArguments(arguments);
return dialog;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View vd = inflater.inflate(R.layout.dialogod, null);
.........
getDialog().setContentView(layout);
return vd;
}
}
那我需要做什么???
这是处理 Activity
或 Fragment
中所有点击的另一种方法,我们有 Context
.
在您的适配器中添加自定义点击侦听器界面。
public interface OnDataClickListener {
void onDataClick();
}
在您的 Adapter 中创建一个变量来保存自定义点击侦听器
public MyAdapter {
private OnDataClickListener mOnDataClickListener;
public MyAdapter(OnDataClickListener listener) {
mOnDataClickListener = listener;
}
}
在您的 ViewHolder 中点击按钮时调用自定义界面的点击方法
holder.mView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mOnDataClickListener.onDataClick();
}
}
在您的 Fragment
中实施 View.OnClickListener
MyFragment implement View.OnClickListener {
@Override
public void onClick(View view) {
// Call/Create your dialog fragment show from here.
}
}
在初始化Adapter时传递Fragment实例
MyAdapter adapter = new MyAdapter(this);
就这些了。
现在我有新问题.....我不知道如何初始化 recyclerview 中的 dialogfragment 和片段中的 recyclerview,所以谁知道怎么做?
片段代码:
public View onCreateView( LayoutInflater inflater, ViewGroup container3,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View v =inflater.inflate(R.layout.fragment_one_day_tasks,container3,false);
final View vd =inflater.inflate(R.layout.dialogod,null);
TextView textView= (TextView) v.findViewById(R.id.ActiveMenu);
TextView textView1= (TextView) v.findViewById(R.id.Alert);
database = new Database(v.getContext());
mId = database.getLastIdOD();
if(mId>=1) {
oneDayList = database.getOneDayList(1);
}
database.close();
//dlg1 = new DialogFragment();
//GridView gridView = (GridView) v.findViewById(R.id.gridViewActiveOd);
RecyclerView recyclerView = (RecyclerView) v.findViewById(R.id.gridResc);
if(0<mId){
recyclerView.setLayoutManager(new GridAutofitLayoutManager(v.getContext(),350));
recyclerView.setAdapter(new adapterRecylcerViewGridODN(v.getContext(),oneDayList,inflater));
/* gridView.setAdapter(new GridOdAdapter(v.getContext(),oneDayList));
gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
final int position, long id) {
tapOnAlert(vd,position);
}
});*/
}else{
textView1.setText("You Haven't got any Active Tasks !");
}
FloatingActionButton fab = (FloatingActionButton) v.findViewById(R.id.fabCreateOd);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
getActivity().finish();
Intent intent = new Intent(getActivity().getApplicationContext(),CreateOneDayNotif.class);
intent.putExtra("mId",1 + database.getLastIdOD());
startActivity(intent);
Snackbar.make(view, "New Task", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
});
return v;
}
RecyclerView 适配器代码:
public void onBindViewHolder(SimpleViewHolder holder, final int position) {
holder.title.setText(mItems.get(position).getTitle());
datecount = new Datecount(mItems.get(position).getDateAndTime());
long minute = datecount.getMinuteInt();
long hour=datecount.getHourInt();
long day=datecount.getDayInt();
long year=datecount.getYearInt();
long month=datecount.getMonthInt();
holder.dataAtime.setText("On date: " + day+"/"+month+"/"+year+ " On time: "+hour+":"+minute);
int iconResId = mContext.getResources().getIdentifier(mItems.get(position).getIcon(), "drawable", mContext.getPackageName());
holder.image.setImageResource(iconResId);
GradientDrawable bgShape = (GradientDrawable) holder.circle.getDrawable();
bgShape.setColor(Color.parseColor(mItems.get(position).getColour()));
holder.mView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//I want to put here dialog.show
//I want to put here dialog.show
}
});
和DialogFragment代码:
public class DialogFragmentOd extends DialogFragment {
boolean isFabOpen;
Animation fab_open,fab_close,rotate_forward,rotate_backward;
List<OneDayTD> oneDayList;
int position;
Database database;
public static DialogFragmentOd getInstance() {
DialogFragmentOd dialog = new DialogFragmentOd();
//Bundle arguments = new Bundle();
//arguments.putParcelable(Person.class.getName(), person);
//dialog.setArguments(arguments);
return dialog;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View vd = inflater.inflate(R.layout.dialogod, null);
.........
getDialog().setContentView(layout);
return vd;
}
}
那我需要做什么???
这是处理 Activity
或 Fragment
中所有点击的另一种方法,我们有 Context
.
在您的适配器中添加自定义点击侦听器界面。
public interface OnDataClickListener {
void onDataClick();
}
在您的 Adapter 中创建一个变量来保存自定义点击侦听器
public MyAdapter {
private OnDataClickListener mOnDataClickListener;
public MyAdapter(OnDataClickListener listener) {
mOnDataClickListener = listener;
}
}
在您的 ViewHolder 中点击按钮时调用自定义界面的点击方法
holder.mView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mOnDataClickListener.onDataClick();
}
}
在您的 Fragment
中实施 View.OnClickListenerMyFragment implement View.OnClickListener {
@Override
public void onClick(View view) {
// Call/Create your dialog fragment show from here.
}
}
在初始化Adapter时传递Fragment实例
MyAdapter adapter = new MyAdapter(this);
就这些了。