2017-01-30 10 views
0
  1. Элемент списка

я хочу назвать фрагмент на imageItem нажмите getSupportFragmentManger не может вызвать Гера и когда передать его в конструктор адаптера также может не работатьфрагмент вызова от recyclerView адаптера

общественного класса MarketOneRecyclerAdapter расширяет RecyclerView.Adapter {

public interface OnItemClickListener {                            
     void onItemClick(ArrayList< MarketItems> item, int Pos);                      
    }                                     
    private final OnItemClickListener listener;                          
    private ArrayList<MarketItems>marketArrayList;                          
    private Context context;                               

    public MarketOneRecyclerAdapter(Context context, ArrayList<MarketItems> marketArrayList, OnItemClickListener listener) {       
    this.listener = listener;                              
    this.context = context;                              
    this.marketArrayList = marketArrayList;                          
}                                     
@Override                                   
public MainViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {                   
    View view = LayoutInflater.from(parent.getContext())                       
      .inflate(R.layout.market_item, parent, false);                       
    return new MarketOneRecyclerAdapter.MainViewHolder(view);                      
}                                     

@Override                                   
public void onBindViewHolder(MainViewHolder holder, int position) {                    
    holder.bind(marketArrayList,listener,position);                        

}                                     

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





public class MainViewHolder extends RecyclerView.ViewHolder{                      

    ImageView imageItem;                               
    CardView cardView;                                



    public MainViewHolder(View itemView) {                           

     super(itemView);                               



     cardView= (CardView) itemView.findViewById(R.id.market_card_view);                   
     imageItem= (ImageView)  itemView.findViewById(R.id.market_item_imageView);                 
     imageItem.setOnClickListener(new View.OnClickListener() {                     
      @Override                                
      public void onClick(View view) {                          

       //Want here call a fragment                          

      }                                  
     });                                  


    }                                    
    public void bind(final ArrayList<MarketItems> item, final OnItemClickListener listener , final int i){           
         Picasso.with(context).load(marketArrayList.get(i).getImages()).networkPolicy(NetworkPolicy.OFFLINE).into(imageItem);      


     imageItem.setTag(item.get(i).getImages());                         

     itemView.setOnClickListener(new View.OnClickListener() {                     
      @Override                                
      public void onClick(View view) {                          
       listener.onItemClick(item,i);                          
     `enter code here`  }                                  
     });                                  
    }                                    
}                                     

}

общественный класс ImageItemFragment extends Fragment { ImageView imageView; Держатель

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 

    View view =inflater.inflate(R.layout.fragment_image_item, container, false); 

    imageView= (ImageView) view.findViewById(R.id.market_item_image); 
    //Picasso.with(getActivity()).load(marketItems.getImages()).networkPolicy(NetworkPolicy.OFFLINE).into(imageView); 


    return view; 
} 

}

+0

Смотрите принятый ответ на этот пост: [получая FragmentManager от контекста] (http://stackoverflow.com/questions/10689997/ fragmentmanager-from-context) – Sevastyan

+0

создать публичную пустоту из вашей активности, чтобы вызвать фрагмент, а затем использовать в контексте адаптера '((YourActivity)) .callFragmentMethod()' –

+0

или вы можете опубликовать, как вы называете фрагмент из активности? –

ответ

0

является ViewHolder inOnBindViewHolder

holder.image_btn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      AppCompatActivity activity = (AppCompatActivity) v.getContext(); 
      Fragment myFragment = new TaskApprovalFragmentDetails(); 
      activity.getSupportFragmentManager().beginTransaction().replace(R.id.linearlayouttaskapproval, myFragment).addToBackStack(null).commit(); 


     } 
    });