我学过的android-2 RecyclerView

RecyclerView

  1. 已经很久没有用ListView了,因为替代的东西用了1年了。
    2.上拉刷新和下拉加载。 好了先把代码考好。

    public class MainActivity extends AppCompatActivity {
    private RecyclerView recyclerView;
    private RecyclerViewAdapter recyclerViewAdapter;
    private LinearLayoutManager linearLayoutManager;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        init();
        listener();
    }
    
    public void init(){
        recyclerViewAdapter=new RecyclerViewAdapter();
        recyclerView=(RecyclerView)findViewById(R.id.recyclerView1);
        linearLayoutManager=new LinearLayoutManager(this);
        recyclerView.setLayoutManager(linearLayoutManager);
        recyclerView.setAdapter(recyclerViewAdapter);
    }
    public void listener(){
        recyclerViewAdapter.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void setOnClickView(View view, final int position) {
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        Toast.makeText(MainActivity.this,String.valueOf(position),Toast.LENGTH_SHORT).show();
                    }
                });
            }
        });
        recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
            @Override
            public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
                super.onScrollStateChanged(recyclerView, newState);
            }
    
            @Override
            public void onScrolled(final RecyclerView recyclerView, int dx, int dy) {
                super.onScrolled(recyclerView, dx, dy);
                Log.i("Tag","tag"+recyclerViewAdapter.getPosition());
                int lastVisibleItem=linearLayoutManager.findLastVisibleItemPosition();
                Log.i("Tag","tag,,,,,,,lastVisibleItem"+lastVisibleItem);
                if(lastVisibleItem==recyclerViewAdapter.getItemCount()-1&&dy>0){
                    recyclerViewAdapter.notifyItemInserted(recyclerViewAdapter.getItemCount());
                            handler.postDelayed(new Runnable() {
                                @Override
                                public void run() {
                                    recyclerViewAdapter.notifyItemRemoved(recyclerViewAdapter.getItemCount());
                                }
                            },1000);
                };
            }
        });
    }
    Handler handler=new Handler(){
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
    
        }
    };
    public interface OnItemClickListener{
        public void setOnClickView(View view,int position);
    }
    class RecyclerViewAdapter extends RecyclerView.Adapter implements View.OnClickListener{
        private int position;
        private OnItemClickListener onItemClickListener;
    
        public void setOnItemClickListener(OnItemClickListener onItemClickListener){
            this.onItemClickListener=onItemClickListener;
        }
    
        public int getPosition() {
            return position;
        }
    
        public void setPosition(int position) {
            this.position = position;
        }
    
        @Override
        public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            Log.i("Tag","tag"+viewType);
            if(viewType==1){
                View view= LayoutInflater.from(MainActivity.this).inflate(R.layout.recyclerview_item1,parent,false);
                ViewHoldR viewHolds=new ViewHoldR(view);
                return viewHolds;
            }else {
                View view= LayoutInflater.from(MainActivity.this).inflate(R.layout.recyclerview_item,parent,false);
                ViewHolds viewHolds=new ViewHolds(view);
                viewHolds.itemView.setOnClickListener(this);
                return viewHolds;
            }
        }
    
        @Override
        public int getItemViewType(int position) {
            if(position+1==this.getItemCount()){
                return 1;
            }else {
                return 0;
            }
        }
    
        @Override
        public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
    
          if(position+1!=this.getItemCount()){
              ((ViewHolds)holder).itemView.setTag(position);
              ((ViewHolds)holder).textView.setText(String.valueOf(position));
          }
            this.setPosition(position);
        }
    
        @Override
        public int getItemCount() {
            return 20;
        }
    
        @Override
        public long getItemId(int position) {
            return super.getItemId(position);
        }
    
        @Override
        public void onClick(View v) {
            onItemClickListener.setOnClickView(v, (Integer) v.getTag());
        }
        class ViewHolds extends RecyclerView.ViewHolder{
            private TextView textView;
            public ViewHolds(View itemView) {
                super(itemView);
                textView= (TextView) itemView.findViewById(R.id.Text1);
            }
        }
        class ViewHoldR extends RecyclerView.ViewHolder{
            public ViewHoldR(View itemView) {
                super(itemView);
            }
        }
    }
    
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }
    
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
    
        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }
    
        return super.onOptionsItemSelected(item);
    }
    }
    • recyclerView 和 ListView 一样需要适配器 所以继承RecyclerView.Adapter 然后通过
//继承RecyclerView.ViewHolder,来创建item的UI。
class ViewHolds extends RecyclerView.ViewHolder{
            private TextView textView;
            public ViewHolds(View itemView) {
                super(itemView);
                textView= (TextView) itemView.findViewById(R.id.Text1);
            }
        }

绑定数据

        @Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
          if(position+1!=this.getItemCount()){
              ((ViewHolds)holder).itemView.setTag(position);
              ((ViewHolds)holder).textView.setText(String.valueOf(position));
          }
            this.setPosition(position);
        }

下拉刷新需要判断形况
也就是说如果滑动到底了,最后一个item去加载动画,然后最后一个Item删除。 所以做一个滑动的监听recyclerView.addOnScrollListener,然后用LinearManagerlinearLayoutManager.findLastVisibleItemPosition();来判断滑动的位置。然后找到recyclerViewAdapter最后一个item的位置recyclerViewAdapter.getItemCount()-1的位置-1是因为ItemCount从0开始的。 如何滑动的位置是最底层的,那么就删除掉最后一个item。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

昏暗的夜晚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值