//menu文件 下拉列表
<?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/three" android:title="瀑布流" app:showAsAction="never"></item>
</menu>
//RecyclerView控件
<android.support.v7.widget.RecyclerView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/main_recycler" > </android.support.v7.widget.RecyclerView> //定义Adapter展示数据public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> { private Context context;//上下文 private List<NewsBean.DataBean> list;//数据 private MyItemCilck itemCilck;//监听器 public MyAdapter(Context context, List<NewsBean.DataBean> list) { this.context=context; this.list=list; } //创建ViewHolder的时候 //实例化ViewHolder @Override public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { //条目布局 View view = LayoutInflater.from(context).inflate(R.layout.item, null); //实例化ViewHolder ,将布局传入 MyViewHolder viewHolder=new MyViewHolder(view); return viewHolder; } //当绑定ViewHolder的时候 //给控件设置数据 @Override public void onBindViewHolder(final MyViewHolder holder, final int position) { holder.getId().setText(list.get(position).getNews_id()); holder.getTitle().setText(list.get(position).getNews_title()); holder.getSummary().setText(list.get(position).getNews_summary()); ImageLoader instance = ImageLoader.getInstance(); instance.displayImage(list.get(position).getPic_url(),holder.getUrl(), Utils.getDisplayImageOption()); if (itemCilck!=null){//设置点击事件 holder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { itemCilck.myItemClick(holder.itemView,position);//调用接口里面的方法 } }); } } //条目数量 @Override public int getItemCount() { return list.size(); } class MyViewHolder extends RecyclerView.ViewHolder{ private TextView id; private TextView title; private TextView summary; private ImageView url; public MyViewHolder(View itemView) { super(itemView); this.id=itemView.findViewById(R.id.news_id); this.title=itemView.findViewById(R.id.news_title); this.summary=itemView.findViewById(R.id.news_summary); this.url=itemView.findViewById(R.id.pic_url); } public TextView getId() { return id; } public TextView getTitle() { return title; } public TextView getSummary() { return summary; } public ImageView getUrl() { return url; } public void setId(TextView id) { this.id = id; } public void setTitle(TextView title) { this.title = title; } public void setSummary(TextView summary) { this.summary = summary; } public void setUrl(ImageView url) { this.url = url; } } //定义接口,实现条目点击事件 public interface MyItemCilck{ void myItemClick(View view,int position); } public void setOnMyItemClickListener(MyItemCilck itemCilck){ this.itemCilck = itemCilck; } //添加数据 public void addItem(NewsBean.DataBean data,int position){ list.add(data); notifyItemInserted(position); } //删除数据 public void delItem(int position){ list.remove(position); notifyItemRemoved(position); notifyItemRangeChanged(position,list.size()); } }
//首页MainActivitypublic class MainActivity extends AppCompatActivity { private String NetString="http://api.expoon.com/AppNews/getNewsList/type/1/p/1"; private List<NewsBean.DataBean> list=new ArrayList<NewsBean.DataBean>(); private RecyclerView rv; private MyAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); getData();//联网解析数据 rv = (RecyclerView) findViewById(R.id.main_recycler);//RcyclerView找到控件,设置适配器 rv.setLayoutManager(new LinearLayoutManager(MainActivity.this));//设置布局管理器 * rv.setItemAnimator(new DefaultItemAnimator());//设置动画 adapter = new MyAdapter(MainActivity.this,list);//设置适配器 传入上下文 集合数据 rv.setAdapter(adapter); //设置条目点击事件 adapter.setOnMyItemClickListener(new MyAdapter.MyItemCilck() { @Override public void myItemClick(View view, int position) { //类名.方法名 adapter.delItem(position); } }); } @Override//创建下拉列表 Menu包名 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: //listView rv.setLayoutManager(new LinearLayoutManager(MainActivity.this)); break; case R.id.two: //gridview rv.setLayoutManager(new GridLayoutManager(MainActivity.this,2)); break; case R.id.three: //流式布局 rv.setLayoutManager(new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL)); break; } return super.onOptionsItemSelected(item); } public void getData() { new MyAsyncTask().execute(NetString); } private class MyAsyncTask extends AsyncTask<String,Void,String>{ @Override protected String doInBackground(String... strings) { return Utils.getNetString(strings[0]); } @Override protected void onPostExecute(String s) { super.onPostExecute(s); Gson gson = new Gson(); NewsBean bean = gson.fromJson(s, NewsBean.class); List<NewsBean.DataBean> data = bean.getData(); list.addAll(data); adapter.notifyDataSetChanged(); } } }//导入依赖compile 'com.android.support:recyclerview-v7:26.0.0-alpha1'//recyclerview依赖 compile 'com.google.code.gson:gson:2.2.4'//Gson包 compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5' //ImageLoader依赖