0

我正在使用下面的适配器recyclerview在聊天应用程序,但在滚动我自动位置更改。我用getItemViewType()我认为这提供了问题。更改RecyclerView中的项目的视图位置滚动Android

public class MessageAdapter extends RecyclerView.Adapter<MessageAdapter.MyViewHolder> { 

Context context; 
List<Message> messageList; 
private int SELF = 7861212; 

public MessageAdapter(Context context, List<Message> messages) { 
    messageList = messages; 
    this.context = context; 
} 

@Override 
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
    View mview = null; 

    if (viewType == SELF) { 
     mview = LayoutInflater.from(parent.getContext()).inflate(R.layout.chat_user2_item, parent, false); 
    } else { 
     mview = LayoutInflater.from(parent.getContext()).inflate(R.layout.chat_user1_item, parent, false); 

    } 

    return new MyViewHolder(mview); 
} 

@Override 
public void onBindViewHolder(MyViewHolder holder, int position) { 

    Message message = messageList.get(position); 

    holder.message_text.setText(message.getText()); 
    holder.chat_company_reply_author.setText(message.getName()); 


    if (message.isfile()) { 
     if (message.getMessageStatus() != null && message.getMessageStatus() == Status.DELIVERED) { 
      holder.rl_file.setVisibility(View.VISIBLE); 
      holder.progress_bar1.setVisibility(View.GONE); 
      try { 
       holder.user_reply_status.setImageDrawable(context.getResources().getDrawable(R.drawable.ic_double_tick)); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 

     } 
     if (message.getFiletype() != null) { 
      holder.rl_file.setVisibility(View.VISIBLE); 
     } 
    } else { 
     if (message.getMessageStatus() != null && message.getMessageStatus() == Status.DELIVERED) { 
      try { 
       holder.user_reply_status.setImageDrawable(context.getResources().getDrawable(R.drawable.ic_double_tick)); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 

     } 
    } 

    try { 
     Picasso.with(context). 
       load(Constant.BASE_URL_FORDOWNLOD + "" + message.getFileurl()). 
       placeholder(R.mipmap.ic_launcher). 
       into(holder.img_chat); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

@Override 
public long getItemId(int position) { 
    return position; 
} 

@Override 
public int getItemViewType(int position) { 
    Message message = messageList.get(position); 
    if (message.getUserType() == UserType.SELF) { 
     return SELF; 
    } 
    return position; 
} 

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

public void add(Message message, RecyclerView recyclerView) { 
    messageList.add(message); 
    notifyItemInserted(messageList.size() - 1); 
} 

public void mesage_status(int issent, int position) { 
    Message message = messageList.get(position); 
    if (issent == 1) { 
     message.setMessageStatus(Status.SENT); 
    } 
    if (issent == 2) { 
     message.setMessageStatus(Status.DELIVERED); 
    } 
    notifyItemChanged(position); 
} 

public class MyViewHolder extends RecyclerView.ViewHolder { 

    public TextView chat_company_reply_author, message_text, time_text; 
    public ImageView img_chat, user_reply_status; 
    public RelativeLayout rl_file; 
    public ProgressBar progress_bar1; 

    public MyViewHolder(View itemView) { 
     super(itemView); 

     img_chat = (ImageView) itemView.findViewById(R.id.img_chat); 
     user_reply_status = (ImageView) itemView.findViewById(R.id.user_reply_status); 
     chat_company_reply_author = (TextView) itemView.findViewById(R.id.chat_company_reply_author); 
     message_text = (TextView) itemView.findViewById(R.id.message_text); 
     time_text = (TextView) itemView.findViewById(R.id.time_text); 
     rl_file = (RelativeLayout) itemView.findViewById(R.id.rl_file); 
     progress_bar1 = (ProgressBar) itemView.findViewById(R.id.progress_bar1); 
    } 

    public void setvalue(Message message, int position) { 

     message_text.setText(message.getText()); 
     chat_company_reply_author.setText(message.getName()); 


     if (message.isfile()) { 
      if (message.getMessageStatus() != null && message.getMessageStatus() == Status.DELIVERED) { 
       rl_file.setVisibility(View.VISIBLE); 
       progress_bar1.setVisibility(View.GONE); 
       try { 
        user_reply_status.setImageDrawable(context.getResources().getDrawable(R.drawable.ic_double_tick)); 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 

      } 
      if (message.getFiletype() != null) { 
       rl_file.setVisibility(View.VISIBLE); 

      } 
     } else { 
      if (message.getMessageStatus() != null && message.getMessageStatus() == Status.DELIVERED) { 
       try { 
        user_reply_status.setImageDrawable(context.getResources().getDrawable(R.drawable.ic_double_tick)); 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 

      } 
     } 

     try { 
      Picasso.with(context). 
        load(Constant.BASE_URL_FORDOWNLOD + "" + message.getFileurl()). 
        placeholder(R.mipmap.ic_launcher). 
        into(img_chat); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
}} 

chat image

+2

欢迎来到StackOverflow!请阅读用户指南,了解如何在发布问题之前提出一个好问题(http://stackoverflow.com/help/how-to-ask)谢谢 –

+0

请不要再加上紧急求助。如果你这样做,我会请主持人看看你的帖子。你不仅需要知道志愿者不会接受你的紧急指示,而且因为你已经解决了这个问题,所以坚持原来的版本显然并不重要。 – halfer

回答

0

我得到了我的问题是,当我使用holder.rl_file.setVisibility(View.VISIBLE);应该在假条件holder.rl_file.setVisibility(View.GONE);

相关问题