[英]How to scale up Recycler View center item while scrolling in android?
[英]How to identify the position of child item of section adapter using recycler view while scrolling
我有一個回收站視圖,其中有部分適配器,其中包括聊天消息,每個消息都有ID。 在單擊消息時,我們能夠獲取消息的ID,但我要獲取的是當前在屏幕上可見的特定消息的ID。 一次,用戶只能看到一條消息,因此我們需要獲取屏幕上顯示的特定消息的ID。 以下是我的應用截圖。
@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);
}
}
我試過下面的代碼以滾動時獲取消息的ID
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
從LayoutManager嘗試try方法isViewPartiallyVisible 。
在適配器中,您可以從recyclerView獲取de LayoutManager,可以從onAttachedToRecyclerView事件獲取。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.