RecyclerView基本使用

XML文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.day06_recyclerview.MainActivity">

    <android.support.v7.widget.RecyclerView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/rv"></android.support.v7.widget.RecyclerView>



</LinearLayout>

主代码:

package com.example.day06_recyclerview;

import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.DefaultItemAnimator;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.StaggeredGridLayoutManager;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import com.google.gson.Gson;
import com.nostra13.universalimageloader.core.ImageLoader;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {
    private static final String TAG = "MainActivity";
    private RecyclerView rv;
    public String url = "http://api.expoon.com/AppNews/getNewsList/type/1/p/1";
    ArrayList<Toutiao.DataBean> list = new ArrayList<>();
    private Myadpater md;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //获取控件 RecyclerView控件容器
        rv = (RecyclerView) findViewById(R.id.rv);
        //初始化数据
        getDate();
        //设置布局管理器
        rv.setLayoutManager(new LinearLayoutManager(MainActivity.this));
        //设置动画
        rv.setItemAnimator(new DefaultItemAnimator());


        //适配器
        md = new Myadpater();
        rv.setAdapter(md);

    }

    //获取网络数据
    public void getDate() {
        new MyAsynyask().execute(url);
    }

    public class MyAsynyask extends AsyncTask<String, Void, String> {
        @Override
        protected String doInBackground(String... strings) {
            return NetUtil.getNetJson(strings[0]);
        }

        @Override
        protected void onPostExecute(String s) {
            super.onPostExecute(s);
            Gson gson = new Gson();
            Log.d(TAG, "onPostExecute() returned: " + s);
            Toutiao toutiao = gson.fromJson(s, Toutiao.class);
            List<Toutiao.DataBean> data = toutiao.getData();
            list.addAll(data);
            md.notifyDataSetChanged();
        }
    }

    //右上角的下拉列表

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.item, menu);
        return true;
    }

    //点击事件

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int itemId = item.getItemId();
        switch (itemId) {
            case R.id.one:
                rv.setLayoutManager(new LinearLayoutManager(MainActivity.this));

                break;
            case R.id.two:
                rv.setLayoutManager(new GridLayoutManager(MainActivity.this, 2));
                break;
            case R.id.there:
                rv.setLayoutManager(new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL));
                break;

        }
        return super.onOptionsItemSelected(item);
    }


    //适配器
    private class Myadpater extends RecyclerView.Adapter<Myadpater.MyViewHolder> {


        @Override
        public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            //条目布局
            View view = LayoutInflater.from(MainActivity.this).inflate(R.layout.datatext, null);
            MyViewHolder myViewHolder = new MyViewHolder(view);
            return myViewHolder;
        }

        //当绑定ViewHolder的时候
        //给控件设置数据
        @Override
        public void onBindViewHolder(final MyViewHolder holder, final int position) {
            holder.getText().setText(list.get(position).getNews_title());
            ImageLoader.getInstance().displayImage(list.get(position).getPic_url(), holder.getImg());
            //item的点击事件
            holder.itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    //删除
                    list.remove(position);
                    md.notifyDataSetChanged();
                }
            });


        }

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


        //viewHolder
        class MyViewHolder extends RecyclerView.ViewHolder {

            private ImageView img;
            private TextView text;

            public MyViewHolder(View itemView) {
                super(itemView);
                img = itemView.findViewById(R.id.img);
                text = itemView.findViewById(R.id.text);
            }

            public ImageView getImg() {
                return img;
            }

            public void setImg(ImageView img) {
                this.img = img;
            }

            public TextView getText() {
                return text;
            }

            public void setText(TextView text) {
                this.text = text;
            }
        }
    }


}


右上角菜单文件:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"

    >

    <item
        android:id="@+id/one"
        android:title="listview"
        app:showAsAction="never">
    </item>

    <item
        android:id="@+id/two"
        android:title="Gridview"
        app:showAsAction="never">
    </item>

    <item
        android:id="@+id/there"
        android:title="Pubuview"
        app:showAsAction="never">
    </item>

</menu>

--------------------------依赖-----------------------
compile 'com.android.support:recyclerview-v7:26.0.0-alpha1'




相关文章: