1

Я сделал адаптер RecyclerView и использовал этот адаптер для раздувания данных в режиме просмотра recycler, я ранее использовал общий метод ListView onItemClickListner, но он, похоже, не работает с RecyclerView, Plese any помочь мне с этимAndroid - Recycler View onClick Listener не работает

класса

Мой RecyclerView адаптер является:

public class TimeAdaptra extends  
RecyclerView.Adapter<TimeAdaptra.RecyclerViewHolder> { 
ArrayList<String> time, status; 

public TimeAdaptra(ArrayList<String> title, ArrayList<String> dec) { 
    this.time = title; 
    this.status = dec; 

} 

@Override 
public RecyclerViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.time_slice, parent, false); 
    RecyclerViewHolder recyclerViewHolder = new RecyclerViewHolder(view); 
    return recyclerViewHolder; 
} 

@Override 
public void onBindViewHolder(RecyclerViewHolder holder, int position) { 
    holder.myTitle.setText(time.get(position)); 
    holder.mydec.setText(status.get(position)); 
} 

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

public static class RecyclerViewHolder extends RecyclerView.ViewHolder { 
    TextView myTitle; 
    TextView mydec; 

    public RecyclerViewHolder(View view) { 
     super(view); 
     myTitle = (TextView) view.findViewById(R.id.timee); 
     mydec = (TextView) view.findViewById(R.id.status); 
    } 
} 
} 

И я делаю инфляцию, как это:

public class Slots extends AppCompatActivity { 
RecyclerView recyclerView; 
RecyclerView.Adapter adapter; 
RecyclerView.LayoutManager manager; 
private ArrayList<String> Time = new ArrayList<String>(); 
private ArrayList<String> Status = new ArrayList<String>(); 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_slots); 

    Time.add("18:00"); 
    Status.add("Available"); 
    recyclerView = (RecyclerView) this.findViewById(R.id.timeslice); 
    manager = new LinearLayoutManager(this); 
    recyclerView.setLayoutManager(manager); 
    recyclerView.setHasFixedSize(true); 
    adapter = new TimeAdaptra(Time, Status); 
    recyclerView.setAdapter(adapter); 
    adapter.notifyDataSetChanged(); 
+0

набор кликов для просмотра в классе адаптеров – Raghunandan

ответ

1

Сделать RecyclerViewHolder реализовать View.OnClickListener так:

public static class RecyclerViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{ 
     TextView myTitle; 
     TextView mydec; 

     public RecyclerViewHolder(View view) { 
      super(view); 
      myTitle = (TextView) view.findViewById(R.id.timee); 
      mydec = (TextView) view.findViewById(R.id.status); 
      myTitle.setOnClickListener(this); 
      mydec.setOnClickListener(this); 

     } 

      @Override 
      public void onClick(View v) { 
       switch (v.getId()) { 
        case R.id.timee: 
        // do task 
        break; 
        case R.id.status: 
        //do task 
        break; 
        } 
      } 
    } 

Если вы хотите, чтобы нажать на каждый элемент списка, то вы должны получить id корневой макет xml Ваш, надувая и setOnClickListener() к нему.

Смежные вопросы