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'