zoukankan      html  css  js  c++  java
  • ListView的基本使用方法和RecyclerView的基本使用方法

    ListView是一种用于列表显示数据内容的控件,它可以通过适配器实现对于数据的列表显示,而RecyclerView是对于ListView优化后的列表数据显示控件。

    个人对于List的使用经历多半在新浪微博集成的时候使用,故这里仅仅是记载RecyclerView的使用方法,

    而对于ListView的方法可在aliCamera项目中,要想查找可直接查找自己以前写过的源码!

    RecyclerView的使用方法:

    1.在要使用RecyclerView的项目中,打开open module setting 选择APP的Dependencies选项,选择添加Library Dependency选项,添加RecyclerView的包

    2.在对应的Activity中添加对应的代码

    具体的代码实现:

    package andrew.com.custompaintdemo;
    
    import android.net.Uri;
    import android.os.Bundle;
    import android.support.v7.app.AppCompatActivity;
    import android.support.v7.widget.LinearLayoutManager;
    import android.support.v7.widget.RecyclerView;
    import android.view.ViewGroup;
    import android.widget.TextView;
    
    public class MainActivity extends AppCompatActivity implements BlankFragment.OnFragmentInteractionListener {
    
        private RecyclerView rv;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    
            rv = new RecyclerView(this);                //新建一个RecyclerView对象
            rv.setLayoutManager(new LinearLayoutManager(this));  //设置这个RecyclerView的布局为线性布局
            setContentView(rv);                     //将RecyclerView作为界面
    
            rv.setAdapter(new RecyclerView.Adapter() {          //设置适配器
    
                class ViewHolder extends RecyclerView.ViewHolder{    //这是一个用于设计RecyclerView的界面元素的类
    
                    private TextView tv;
    
                    public ViewHolder(TextView itemView) {
                        super(itemView);
                        tv = itemView;
                    }
    
                    public TextView getTv() {
                        return tv;
                    }
                }
                                    //以下部分与ListView类似,简单易懂
                @Override
                public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
                    return new ViewHolder(new TextView(getApplicationContext()));
                }
    
                @Override
                public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
                    ViewHolder h = (ViewHolder) holder;
                    h.getTv().setTextColor(getResources().getColor(R.color.colorAccent));
                    h.getTv().setText("item"+position);
                }
    
                @Override
                public int getItemCount() {
                    return 100;
                }
            });
    
        }
    
    }


    使用XML资源文件的配置方法:

    1.先设置自定义adapter,继承RecylerView.adapter,绑定XML file,设置适配方法

    具体代码:

    package andrew.com.custompaintdemo;
    
    import android.app.Activity;
    import android.support.v7.widget.RecyclerView;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.TextView;
    
    /**
     * Created by Andrew on 2016/7/26.
     */
    class MyAdapter extends RecyclerView.Adapter {
    
        private Activity mainActivity;
    
        public MyAdapter(Activity mainActivity) {
            this.mainActivity = mainActivity;
        }
    
        class ViewHolder extends RecyclerView.ViewHolder{
    
            private View root;
            private TextView tv1,tv2;
    
            public ViewHolder(View view) {
                super(view);
                root = view;
            //绑定布局控件的方法 tv1
    = (TextView) root.findViewById(R.id.tv1); tv2 = (TextView) root.findViewById(R.id.tv2); } public TextView getTv1() { return tv1; } public TextView getTv2() { return tv2; } } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

            //精华只在这一句!精华只在这一句!精华只在这一句!
    return new ViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.list,null)); } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { ViewHolder h = (ViewHolder) holder; h.getTv1().setTextColor(mainActivity.getResources().getColor(R.color.colorAccent)); h.getTv1().setText("item" + position); h.getTv2().setTextColor(mainActivity.getResources().getColor(R.color.colorAccent)); h.getTv2().setText("content"); } @Override public int getItemCount() { return 100; } }

    XML的配置情况:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical" android:layout_width="match_parent"
        android:layout_height="match_parent">
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/tv1"/>
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/tv2"/>
    </LinearLayout>


    在Activity中可以通过一些配置来改变界面的显示状况:

    rv.setLayoutManager(new GridLayoutManager(this,4));  //表格布局形式

    rv.setLayoutManager(new LinearLayoutManager(this,LinearLayoutManager.HORIZONTAL,TRUE))  //水平布局形式

  • 相关阅读:
    maven3实战之仓库(快照版本)
    三、常见分析函数详解
    二、理解over()函数
    一、Oracle分析函数入门
    Java程序性能优化技巧
    同步synchronized用法
    java枚举使用详解
    jpa+spring配置多数据源
    jxl导入/导出excel
    CVS数据的导入和导出
  • 原文地址:https://www.cnblogs.com/thinfog/p/5708726.html
Copyright © 2011-2022 走看看