2016-04-17 6 views
-1

私は新しい問題がありました.....私は、recyclerviewとrecyclerviewのdialogfragmentをどのように断片化して初期化するのか分かりません。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; 
} 
} 

だから私は何をする必要がありますか?

答えて

0

ActivityまたはFragmentのすべてのクリックを処理する別の方法です(Contextがある場合)。

アダプターにカスタムのクリックリスナーインターフェースを追加します。

public interface OnDataClickListener { 
    void onDataClick(); 
} 

ボタンがあなたのViewHolderに

holder.mView.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     mOnDataClickListener.onDataClick(); 
    } 
} 

をクリックしたときに実装するカスタムインターフェイスのクリックメソッドを呼び出しカスタムクリックリスナー

public MyAdapter { 
    private OnDataClickListener mOnDataClickListener; 

    public MyAdapter(OnDataClickListener listener) { 
     mOnDataClickListener = listener; 
    } 
} 

を保持するためにあなたのアダプタで変数を作成します。あなたのフラグメントのView.OnClickListener

MyFragment implement View.OnClickListener { 
    @Override 
    public void onClick(View view) { 
     // Call/Create your dialog fragment show from here. 
    } 
} 

すべてだアダプタ

MyAdapter adapter = new MyAdapter(this);

を初期化するときフラグメントインスタンスを渡します。

関連する問題