2017-09-26 1 views
-8

recyclerview의 단일 행을 클릭하면 recyclerview 어댑터에서 조각을 열고 싶습니다. 이 활동에는 뷰 페이저가있는 하나의 주요 활동과 세 개의 단편이 있습니다. 두 번째 조각 안에 두 개의 조각이 더 있습니다. 첫 번째 조각 안에는 recyclerview를 사용했습니다. 그 recyclerview에서 내가 recyclerview의 행을 클릭하면 새로운 조각을 열고 싶습니다.recyclerview 어댑터에서 자식 조각을 호출하는 방법

TodayTaskAdapter

package com.smartitventures.employeeapp.Adapters; 

import android.app.Activity; 
import android.content.Context; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentTransaction; 
import android.support.v7.widget.RecyclerView; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.TextView; 
import android.widget.Toast; 

import com.smartitventures.employeeapp.Activities.ProfileActivity3; 
import com.smartitventures.employeeapp.Fragments.FragmentTaskHistory; 
import com.smartitventures.employeeapp.Fragments.TaskDetailFragment; 
import com.smartitventures.employeeapp.Interfaces.ItemClickListener; 
import com.smartitventures.employeeapp.R; 
import com.smartitventures.employeeapp.Response.Response.TaskResponse.TaskPayload; 

import java.util.ArrayList; 


public class TodayTaskAdapter extends RecyclerView.Adapter<TodayTaskAdapter.MyViewHolder> { 

    private ArrayList<TaskPayload> taskPayloadArrayList; 
    private Context context; 

    ProfileActivity3 profileActivity3 = (ProfileActivity3) context; 

    public TodayTaskAdapter(Activity context, ArrayList<TaskPayload> taskPayloadArrayList) 
    { 
     this.taskPayloadArrayList = taskPayloadArrayList; 
     this.context = context; 

    } 

    @Override 
    public TodayTaskAdapter.MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 

     View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.today_task_row, parent, false); 

     context = parent.getContext(); 
     return new MyViewHolder(view); 
    } 


    @Override 
    public void onBindViewHolder(TodayTaskAdapter.MyViewHolder holder, int position) { 


     TaskPayload taskPayload = taskPayloadArrayList.get(position); 

     holder.tvTitle.setText(taskPayload.getTitle()); 
     holder.tvDesc.setText(taskPayload.getDescription()); 
     holder.tvAssignDate.setText(taskPayload.getCreatedOn()); 
     holder.tvDeadline.setText(taskPayload.getDeadline()); 

     holder.setClickListener(new ItemClickListener() { 
      @Override 
      public void onClick(View view, int position, boolean isLongClick) { 

       Toast.makeText(context, "Clickkkkkkkkkkkkkkkkkkkkkkkk", Toast.LENGTH_SHORT).show(); 

       FragmentTaskHistory fragmentTaskHistory = new FragmentTaskHistory(); 
       FragmentTransaction transaction = profileActivity3.getSupportFragmentManager().beginTransaction(); 
       transaction.replace(R.id.frame_container, fragmentTaskHistory, "Fragment History Task").commit(); 

      } 
     }); 

    } 

    @Override 
    public int getItemCount() { 
     return taskPayloadArrayList.size(); 
    } 

    public static class MyViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { 


     TextView tvTitle,tvDesc,tvAssignDate,tvDeadline; 

     private ItemClickListener clickListener; 


     public MyViewHolder(View itemView) { 
      super(itemView); 

      tvTitle = itemView.findViewById(R.id.tvTitle); 
      tvDesc = itemView.findViewById(R.id.tvDesc); 
      tvAssignDate = itemView.findViewById(R.id.tvAssignDate); 
      tvDeadline = itemView.findViewById(R.id.tvDeadline); 

      itemView.setOnClickListener(this); 

     } 

     public void setClickListener(ItemClickListener itemClickListener){ 
      this.clickListener = itemClickListener; 
     } 

     @Override 
     public void onClick(View view) { 
      clickListener.onClick(view,getPosition(),false); 

     } 


    } 
} 
+0

오류 로그 여기에 – akhilesh0707

답변

1

이 방법을 시도;

holder.setClickListener(new ItemClickListener() { 
     @Override 
     public void onClick(View view, int position, boolean isLongClick) { 

      Fragment fragment = new FragmentTaskHistory(); 
      FragmentManager fm = getActivity().getSupportFragmentManager(); 
      FragmentTransaction ft = fm.beginTransaction(); 
      ft.replace(R.id.frame_container, fragment); 
      ft.commit(); 

     } 
    }); 
+0

나를 위해 작동하지 않습니다. 이 프래그먼트의 어댑터는 프래그먼트 안에 있습니다. –

+1

@DharamveerSingh : FragmentTaskHistory Fragment에 배경을 추가 했습니까? 레이아웃에 배경을 추가하지 않으면 변경 사항이 표시되지 않습니다. –

관련 문제