Я реализую приложение для чата, как приложение, когда я получаю сообщение, которое я хочу обновить количество непрочитанных сообщений для этого конкретного чата.Получить позиции позиции позиции для повторного использования по тегу?
Я использую просмотр recycler для отображения контактов, теперь, когда я получаю push-уведомление для чата, мне нужно обновить непрочитанное сообщение строки, как показано ниже.
Если пользователь щелкает по любому из пункта я могу получить представление, но я могу получить элемент представления утилизатора динамически
Если я знаю позицию я могу получить, но здесь пользователь обыкновения нажать на любом строки, мне нужно обновить конкретную строку динамически. Я думал установить тег для каждой строки, но я не знаю, как получить строку на основе ее тега.
Заранее спасибо
обновленный код:
public class JobsFragmentRecyclerViewAdapter extends RecyclerView.Adapter<JobsFragmentRecyclerViewAdapter.JobsViewHolder> {
private List<PdJob> jobs;
public JobsFragmentRecyclerViewAdapter(List<PdJob> jobs){
this.jobs = jobs;
}
public void sortByCustomerName(){
Comparator<PdJob> myComparator = new Comparator<PdJob>() {
public int compare(PdJob obj1,PdJob obj2) {
if(obj1.userName != null && obj2.userName != null){
return obj1.userName.compareTo(obj2.userName);
}
return 0;
}
};
Collections.sort(jobs,myComparator);
this.notifyDataSetChanged();
}
public void sortByModel(){
Comparator<PdJob> myComparator = new Comparator<PdJob>() {
public int compare(PdJob obj1,PdJob obj2) {
if(obj1.jobCarName != null && obj2.jobCarName != null){
return obj1.jobCarName.compareTo(obj2.jobCarName);
}
return 0;
}
};
Collections.sort(jobs,myComparator);
this.notifyDataSetChanged();
}
@Override
public JobsViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View partnerTypeView = LayoutInflater.from(parent.getContext()).inflate(R.layout.recycler_item, parent, false);
JobsViewHolder jobsViewHolder = new JobsViewHolder(partnerTypeView);
return jobsViewHolder;
}
@Override
public void onBindViewHolder(final JobsViewHolder holder, int position) {
final PdJob pdJob = jobs.get(position);
holder.mView.setTag(pdJob.jobId);
holder.consumerName.setText(pdJob.userName);
holder.jobIdNumber.setText(pdJob.jobId);
holder.consumerVehicle.setText(pdJob.jobCarName);
holder.typeOfService.setText(pdJob.serviceType);
holder.registrationNumber.setText(pdJob.regNo);
if(NotificationManager.checkJobChatExists(pdJob.jobId)) {
holder.textNumber.setText("" + NotificationManager.getJobNotificationCount(pdJob.jobId));
}
else {
holder.textNumber.setText("0");
}
holder.mView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//screen navigation
}
});
holder.chatButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//screen navigation
}
});
}
@Override
public int getItemCount() {
return jobs.size();
}
static class JobsViewHolder extends RecyclerView.ViewHolder{
@InjectView(R.id.registration_number)
TextView registrationNumber;
@InjectView(R.id.job_id_number) TextView jobIdNumber;
@InjectView(R.id.consumer_name) TextView consumerName;
@InjectView(R.id.consumer_vehicle_model) TextView consumerVehicle;
@InjectView(R.id.text_number) TextView textNumber;
@InjectView(R.id.job_type_of_service) TextView typeOfService;
@InjectView(R.id.chat_button) ImageView chatButton;
public final View mView;
JobsViewHolder(View itemView) {
super(itemView);
mView = itemView;
ButterKnife.inject(this, itemView);
}
}
}
вы держите список ваших взглядов? Если это так, вы можете получить представление из своего тега, обратившись к этому индексу в своем списке? Можете ли вы разместить какой-то код. – vguzzi
в setupRecyclerView u, возможно, зарегистрировал адаптер, тогда в этом адаптере у вас может быть класс держателя, там вы можете установить прослушиватель onclick для представления и в методе onclick и получить элемент, нажатый. скажем, cv - это мой cardview cv = (CardView) itemView.findViewById (R.id.cv); cv.setOnClickListener (это); общественного недействительного OnClick (View v) {// TODO Автоматически сгенерированный метод заглушка если (v == резюме) { Toast.makeText (v.getContext(), "Имя ==>" + personName.getText (), Toast.LENGTH_SHORT) .show(); }} – Mahalakshmi
@Mahalakshmi решение, которое вы указали, - это когда пользователь нажимает на вид адаптера (ов), но этот вопрос касается обновления одного из элементов адаптера recyclerview с количеством чатов без взаимодействия с пользователем. – Manikanta