标签(空格分隔): android RecyclerView 倒序android
##一、写在前面 实现一个聊天界面,就是相似QQ那种,这里是讲一下倒序排列,不实现QQ的各类高级功能ide
##二、ListView 反转数据 只要把数据倒序加入到adapter的数据集中,就能够实现倒序效果布局
/** * 回底部 */ public void goBottom() { handler.post(new Runnable() { @Override public void run() { if (mListView != null) mListView.setSelection(mListView.getBottom()); } }); }
这个方案有一下几个问题post
##三、RecyclerViewthis
###方案1、反转数据 同listview的实现方式,将数据倒序加入,除了具备listview方式的问题code
###方案2、反转列表 RecyclerView的布局是有LayoutManager控制的,LinearLayoutManager就支持了倒序的功能get
setStackFromEnd(true)
setReverseLayout(true)
list.addFirst(item)
在数据上,能够考虑使用上面3的方法,直接添加数据到列表的头部,或者重写adapter的getItem方法,改成get(size-1-position)
RecyclerView rv = (RecyclerView) findViewById(R.id.rv); LinearLayoutManager layout = new LinearLayoutManager(this); layout.setStackFromEnd(true);//列表再底部开始展现,反转后由上面开始展现 layout.setReverseLayout(true);//列表翻转 rv.setLayoutManager(layout); final SimpleRvAdapter adapter = new SimpleRvAdapter(this); rv.setAdapter(adapter);
fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { adapter.add(String.valueOf(adapter.getItemCount() + 1)); adapter.notifyDataSetChanged(); } });
public class SimpleRvAdapter extends RecyclerView.Adapter<SimpleRvAdapter.VH> { private Context mContext; private LinkedList<String> list = new LinkedList<>(); public SimpleRvAdapter(Context context) { mContext = context; } public void add(String item) { list.addFirst(item); } @Override public VH onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(mContext).inflate(R.layout.item, parent, false); return new VH(view); } @Override public void onBindViewHolder(VH holder, final int position) { holder.textView.setText(list.get(position)); holder.textView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(mContext, "position:" + position, Toast.LENGTH_LONG).show(); } }); } @Override public int getItemCount() { return list.size(); } public static class VH extends RecyclerView.ViewHolder { private TextView textView; public VH(View itemView) { super(itemView); textView = (TextView) itemView.findViewById(R.id.textView); } } }
这样就实现了咱们须要的功能,这时候,列表使反转的,bottom在上面,其余的功能正常使用,好比,加载更多自动会跑到上面去 若是在需求上有出入,能够根据需求自定义LayoutManager,这也就是RecyclerView的强大之处,,彻底由你自定义的布局it