2015-10-28 3 views
0

Привет, я попытался сделать onclick в моем просмотре recycler, прежде чем реализовать onclick в моем моем первоначальном проекте, я создал фиктивный проект для тестирования просмотра recycler и его часы. Мой фиктивный проект работает отлично, я могу щелкнуть представление recycler, а затем может отобразить детали в другом действии. Но я использовал тот же код в своем первоначальном проекте, но я попытался щелкнуть элементы на ресайклере view, there response no response. И я заметил ошибку в моем оригинальном проекте log cat:/RecyclerView: адаптер не прилагается; пропуск макет Мой манекен код проектаПривет, я попытался реализовать действие onclick в моем recyclerview, но его не работает

public class RVAdapter 
    extendsRecyclerView.Adapter<RVAdapter.PersonViewHolder> {  public 
    List<Person> persons= Collections.emptyList(); //  private 
    Context mContext; private LayoutInflater inflater; 



      ImageLoader mImageLoader = AppController.getInstance().getImageLoader(); 

      private static Context context; 


      public RVAdapter(Context context, List<Person> persons) { 
       this.persons = persons; 
        this.context = context; 
       inflater = LayoutInflater.from(context); 
      } 

      @Override 
      public PersonViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
       View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.cardview, 
     parent, false); 
       PersonViewHolder pvh = new PersonViewHolder(v); 


       return pvh; 
      } 

      @Override 
      public void onBindViewHolder(PersonViewHolder holder, int postions) { 

       Person person = persons.get(postions); 
       holder.phoneName.setText(person.getKitchen_accesries()); 
       holder.phonePrice.setText(person.getKitchen_price()); 
       holder.itemView.setTag(person); 

      if (mImageLoader == null) 
        mImageLoader = AppController.getInstance().getImageLoader(); 
       holder.thumbnail.setImageUrl(person.getThumbnail(), mImageLoader); 


      } 


      @Override 
      public int getItemCount() { 
       if (persons != null) { 
        return persons.size(); 
       } 
       return 0; 
      } 


      @Override 
      public void onAttachedToRecyclerView(RecyclerView recyclerView) { 
       super.onAttachedToRecyclerView(recyclerView); 
      } 

      public static class PersonViewHolder extends RecyclerView .ViewHolder 
        implements View 
        .OnClickListener { 
       CardView cv; 
       TextView phoneName; 
       TextView phonePrice; 
       public List<Person> persons; 


       NetworkImageView thumbnail; 

       PersonViewHolder(View itemView) { 
        super(itemView); 

        cv = (CardView) itemView.findViewById(R.id.card_view); 
        phoneName = (TextView) itemView.findViewById(R.id.phone_name); 
        phonePrice = (TextView) itemView.findViewById(R.id.phone_price); 
        thumbnail = (NetworkImageView) itemView.findViewById(R.id.thumbnail); 
        itemView.setOnClickListener(this); // 
       } 

       @Override 
       public void onClick(View view) { 

        Intent intent = new Intent(context,ViewActivity.class); 

        Person person =(Person)view.getTag(); 

        String strUrl= person.getThumbnail(); 
        String product_name=person.getKitchen_accesries(); 
        String product_price=person.getKitchen_price(); 
        intent.putExtra("TV",product_name); 
        intent.putExtra("Price",product_price); 
        intent.putExtra("Image",strUrl); 
        context.startActivity(intent); 

       } 


      } 


     } 

Мой Оригинальный код проекта:

 public class Mobile_recycle_Adapter extends  RecyclerView. 
Adapter <Mobile_recycle_Adapter.PersonViewHolder> { 
       List<Details> mobile_details= Collections.emptyList(); 
       private LayoutInflater inflater; 
       private static Context context; 

    ImageLoader mImageLoader = AppController.getInstance().getImageLoader(); 


public Mobile_recycle_Adapter(Context context,List<Details> 
mobile_details) { 
     this.mobile_details = mobile_details; 
    this.context = context; 
    inflater = LayoutInflater.from(context); 
    } 

    @Override 
    public PersonViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
     View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.cardview, 
parent, false); 
     PersonViewHolder pvh = new PersonViewHolder(v); 
     return pvh; 
    } 

    @Override 
    public void onBindViewHolder(PersonViewHolder holder, int i) { 

     Details mob_details=mobile_details.get(i); 
     holder.phoneName.setText(mob_details.getPhone_name()); 
     holder.phonePrice.setText(mob_details.getPhone_price()); 


// 
     if (mImageLoader == null) 
      mImageLoader = AppController.getInstance().getImageLoader(); 
     holder.thumbnail.setImageUrl(mob_details.getPhone_image(), mImageLoader); 
    } 

    @Override 
    public int getItemCount() { 
     if (mobile_details != null) { 
      return mobile_details.size(); 
     } 
     return 0; 
    } 



    public static class PersonViewHolder extends RecyclerView.ViewHolder implements View 
      .OnClickListener{ 
     CardView cv; 
     TextView phoneName; 
     TextView phonePrice; 
     NetworkImageView thumbnail; 

     PersonViewHolder(View itemView) { 
      super(itemView); 
      cv = (CardView) itemView.findViewById(R.id.card_view); 
      phoneName = (TextView) itemView.findViewById(R.id.phone_name); 
      phonePrice = (TextView) itemView.findViewById(R.id.phone_price); 
      thumbnail=(NetworkImageView) itemView.findViewById(R.id.thumbnail); 
     } 
     @Override 
     public void onClick(View view) { 

      Intent intent = new Intent(context,Details_view.class); 

      Details person =(Details)view.getTag(); 

      String strUrl= person.getPhone_image(); 
      String product_name=person.getPhone_name(); 
      String product_price=person.getPhone_price(); 
      intent.putExtra("Phone",product_name); 
      intent.putExtra("Price",product_price); 
      intent.putExtra("Image",strUrl); 
      context.startActivity(intent); 

     } 
    } 
+0

привет Harshad у вас есть какое-либо решение для моего pblm? – swaroop

+0

change itemView.setOnClickListener (this); в коде ur для cv.setOnClickListener (это); и в OnClick метода сделать проверку ..... @Override общественного недействительным OnClick (View v) {// TODO Автоматически сгенерированный метод заглушки если (v == резюме) { // делать то, что и хочет здесь }} – Mahalakshmi

+0

Позвольте мне попробовать и поймать u – swaroop

ответ

1

Вы не хватает, чтобы написать itemView.setOnClickListener(this); в коде проекта Orignal,

вы должны добавьте эту строку в свой конструктор PersonViewHolder(), как вы это делали в своем фиктивном проекте

+0

Я добавил, что нет ответа, phonePrice = (TextView) itemView.findViewById (R.id.phone_price); миниатюр = (NetworkImageView) itemView.findViewB – swaroop

+0

в качестве обходного пути вы можете попытаться установить, что в 'onBindViewHolder()', как это, 'holder.itemView.setOnClickListener (новый View.OnClickListener() { @Override общественных недействительный OnClick (View v) {}; ' –

+0

Да, позвольте мне попробовать и поймать вас в ближайшее время спасибо – swaroop

0

добавить cv.setOnClickListener(this); в урах конструктора PersonViewHolder

+0

Не работает приложение распалось – swaroop