У меня есть представление переработчика, в котором есть раздел адаптера, который состоит из сообщений чата, и у нас есть идентификаторы для каждого сообщения. При щелчке сообщения мы можем получить идентификаторы сообщений, но мне нужно получить идентификатор конкретного сообщения, которое в данный момент отображается на экране. За один раз пользователю будет видно только одно сообщение, поэтому нам нужно получить идентификатор этого конкретного сообщения, которое присутствует на экране. Ниже скриншот моего приложения.
Снимок экрана
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int section, int relativePosition, int absolutePosition) {
String header1 = header.get(section);
allData = mArrChildHashMap.get(header1);
String Message = allData.get(relativePosition).getMessage();
String MessageId = allData.get(relativePosition).getMessageId();
..................
...................
String ticketId = allData.get(relativePosition).getTicketId();
String AcceptFlag = checkNull(allData.get(relativePosition).getTicketAccepted());
String ExpiryTime = checkNull(allData.get(relativePosition).getExpiryTime());
ItemViewHolder itemViewHolder = (ItemViewHolder) holder;
//Ticket
itemViewHolder.Timer.setVisibility(View.VISIBLE);
itemViewHolder.ticket.setVisibility(View.VISIBLE);
itemViewHolder.ticketTitle.setText(Message);
itemViewHolder.Message.setVisibility(View.GONE);
setTicketStatus(itemViewHolder , ticketType);
if(owner.equals("YES")){
RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
lp.setMargins(150, 0, 0, 0);
itemViewHolder.mLayout.setLayoutParams(lp);
if(messageType.equals("1"))
{
itemViewHolder.mLayout.setBackgroundResource(R.drawable.bubble2);
}else {
itemViewHolder.mLayout.setBackgroundResource(0);
}
lp.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
// itemViewHolder.mLayout.setGravity(Gravity.RIGHT);
itemViewHolder.Tick.setVisibility(View.VISIBLE);
itemViewHolder.Accept.setVisibility(View.INVISIBLE);
// itemViewHolder.status.setVisibility(View.VISIBLE);
if(deliveryFlag.equals("YES")){
// itemViewHolder.status.setText("Deliv");
itemViewHolder.Tick.setBackgroundResource(R.drawable.check);
}
itemViewHolder.itemLongClick(Message,section,relativePosition,longClickListener);
}else{
RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
lp.setMargins(0, 0, 150, 0);
lp.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
itemViewHolder.mLayout.setLayoutParams(lp);
itemViewHolder.Accept.setVisibility(View.VISIBLE);
if(messageType.equals("1"))
{
itemViewHolder.mLayout.setBackgroundResource(R.drawable.bubble1);
}else {
itemViewHolder.mLayout.setBackgroundResource(0);
}
itemViewHolder.status.setVisibility(View.GONE);
itemViewHolder.Tick.setVisibility(View.GONE);
}
itemViewHolder.Message.setText(Message);
itemViewHolder.sampleTime.setText(time);
itemViewHolder.name.setText(name);
if(name.equals("")){
itemViewHolder.name.setVisibility(View.GONE);
}else {
itemViewHolder.name.setVisibility(View.VISIBLE);
}
if(AcceptFlag.equals("1")){
itemViewHolder.Accept.setVisibility(View.GONE);
// itemViewHolder.Accept.setText("Accepted");
itemViewHolder.Timer.setVisibility(View.VISIBLE);
}
if(!ExpiryTime.equals("0")){
customRunnable = new CustomRunnable(handler,itemViewHolder.Timer,Long.parseLong(ExpiryTime));
handler.removeCallbacks(customRunnable);
customRunnable.holder = itemViewHolder.Timer;
customRunnable.millisUntilFinished = Long.parseLong(ExpiryTime);
}
itemViewHolder.itemLongClick(Message,section,relativePosition,longClickListener);
itemViewHolder.OnAcceptClick(ticketId,section,absolutePosition,onClickListener);
itemViewHolder.OnTimerClick(ticketId,section,absolutePosition,onClickListener);
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, boolean header) {
View v = null;
if (header)
{
v = LayoutInflater.from(parent.getContext())
.inflate(R.layout.list_item_section1, parent, false);
return new SectionViewHolder(v);
} else {
v = LayoutInflater.from(parent.getContext())
.inflate(R.layout.list_item_section, parent, false);
return new ItemViewHolder(v);
}
}
Я попробовал приведенный ниже код, чтобы получить идентификатор сообщения при прокрутке
mRecyclerView.setOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
overallXScroll = overallXScroll + dx;
Log.i("check","overall->" + overallXScroll);
}
});
Я получаю ниже вывода
05-12 15: 08: 03.451 22694-22694 / com ...... E / check: в целом-> 0 05-12
15: 08: 03.467 22694-22694 / com ...... E / check: в целом-> 0