MyApp
public class MyApp extends Application{
private static RequestQueue mQueue;
@Override
public void onCreate() {
super.onCreate();
mQueue = Volley.newRequestQueue(getApplicationContext());
}
public static RequestQueue getQueue(){
return mQueue;
}
}
MainActivity
public class RecyclerActivity02 extends AppCompatActivity {
private String url = "http://www.qubaobei.com/ios/cf/dish_list.php?stage_id=1&limit=20&page=1";
private ListAdapter adapter;
private GridAdapter gridAdapter;
private Context context;
private RecyclerView mRecyclerView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_recycler_basic);
mRecyclerView = (RecyclerView) findViewById(R.id.rv);
context = this;
loadData(url);
}
private void loadData(String url){
StringRequest request = new StringRequest(Request.Method.GET, url, new Response.Listener<String>() {
@Override
public void onResponse(String s) {
List<ParseFoodData.Food> rootBeen = ParseFoodData.parseData(s);
adapter = new ListAdapter(context, rootBeen);
gridAdapter = new GridAdapter(context, rootBeen);
mRecyclerView.setAdapter(adapter);
LinearLayoutManager manager = new LinearLayoutManager(context, LinearLayoutManager.VERTICAL, false);
mRecyclerView.setLayoutManager(manager);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
}
});
MyApp.getQueue().add(request);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.food, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.list:
mRecyclerView.setAdapter(adapter);
LinearLayoutManager manager = new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false);
mRecyclerView.setLayoutManager(manager);
break;
case R.id.grid:
mRecyclerView.setAdapter(gridAdapter);
GridLayoutManager gManager = new GridLayoutManager(this, 2);
mRecyclerView.setLayoutManager(gManager);
break;
}
return super.onOptionsItemSelected(item);
}
}
Adapter
listadapter
public class ListAdapter extends RecyclerView.Adapter<ListAdapter.ListViewHolder> {
private Context context;
private List<ParseFoodData.Food> mDatas;
private LayoutInflater inflater;
public ListAdapter(Context context, List<ParseFoodData.Food> mDatas) {
this.context = context;
this.mDatas = mDatas;
inflater = LayoutInflater.from(context);
}
@Override
public ListViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = inflater.inflate(R.layout.item_list,parent,false);
ListViewHolder holder = new ListViewHolder(view);
return holder;
}
@Override
public void onBindViewHolder(ListViewHolder holder,int position) {
ParseFoodData.Food bean = mDatas.get(position);
holder.tv_name.setText(bean.getTitle());
holder.tv_summary.setText(bean.getFood_str());
Picasso.with(context).load(bean.getPic()).into(holder.iv);
}
@Override
public int getItemCount() {
return mDatas.size();
}
class ListViewHolder extends RecyclerView.ViewHolder {
private ImageView iv;
private TextView tv_name,tv_summary;
public ListViewHolder(View itemView) {
super(itemView);
iv = (ImageView)itemView.findViewById(R.id.icon);
tv_name = (TextView)itemView.findViewById(R.id.tv_name);
tv_summary = (TextView)itemView.findViewById(R.id.tv_summary);
}
}
}
GridAdater
public class GridAdapter extends RecyclerView.Adapter<GridAdapter.GirdViewHolder> {
private Context context;
private List<ParseFoodData.Food> mDatas;
private LayoutInflater inflater;
public GridAdapter(Context context, List<ParseFoodData.Food> mDatas) {
this.context = context;
this.mDatas = mDatas;
inflater = LayoutInflater.from(context);
}
@Override
public GirdViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = inflater.inflate(R.layout.item_grid,parent,false);
GirdViewHolder holder = new GirdViewHolder(view);
return holder;
}
@Override
public void onBindViewHolder(GirdViewHolder holder, int position) {
ParseFoodData.Food bean = mDatas.get(position);
holder.tv_name.setText(bean.getTitle());
Picasso.with(context).load(bean.getPic()).into(holder.iv);
}
@Override
public int getItemCount() {
return mDatas.size();
}
class GirdViewHolder extends RecyclerView.ViewHolder {
private ImageView iv;
private TextView tv_name;
public GirdViewHolder(View itemView) {
super(itemView);
iv = (ImageView)itemView.findViewById(R.id.id_icon);
tv_name = (TextView)itemView.findViewById(R.id.id_country);
}
}
}
布局
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_recycler_basic"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.qianfeng.day04.RecyclerBasicActivity">
<android.support.v7.widget.RecyclerView
android:id="@+id/rv"
android:layout_height="match_parent"
android:layout_width="match_parent">
</android.support.v7.widget.RecyclerView>
</RelativeLayout>
item_list
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="10dp">
<ImageView
android:id="@+id/icon"
android:layout_width="80dp"
android:layout_height="80dp"
android:src="@mipmap/ic_launcher" />
<TextView
android:id="@+id/tv_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_toEndOf="@+id/icon"
android:layout_toRightOf="@+id/icon"
android:text="油焖大虾"
android:textColor="#ff0000"
android:layout_marginLeft="20dp"
android:textSize="25sp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="大虾"
android:id="@+id/tv_summary"
android:textSize="15sp"
android:maxLines="4"
android:ellipsize="end"
android:layout_marginTop="10dp"
android:layout_below="@+id/tv_name"
android:layout_alignLeft="@+id/tv_name"
android:layout_alignStart="@+id/tv_name" />
<ImageView
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_below="@+id/icon"
android:layout_marginTop="10dp"
android:background="#000000"/>
</RelativeLayout>
item_grid
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/id_icon"
android:layout_margin="5dp"
android:scaleType="centerCrop"
android:layout_width="match_parent"
android:layout_height="150dp"
android:src="@mipmap/ic_launcher"/>
<TextView
android:id="@+id/id_country"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="日本"
android:textSize="20sp"
android:textColor="#ffffff"
android:layout_alignBottom="@id/id_icon"
android:layout_alignParentLeft="true"
android:layout_marginBottom="10dp"
android:layout_marginLeft="20dp"/>
</RelativeLayout>
给头视图用的menu
food
<?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/comment"
android:orderInCategory="100"
android:title="展示类型"
app:showAsAction="always">
<item
android:id="@+id/list"
android:orderInCategory="100"
android:title="列表视图" />
<item
android:id="@+id/grid"
android:orderInCategory="100"
android:title="网格视图" />
</item>
</menu>
bean
public class ParseFoodData {
private List<Food>data;
public List<Food> getData() {
return data;
}
public void setData(List<Food> data) {
this.data = data;
}
public static List<Food>parseData(String json){
return new Gson().fromJson(json,ParseFoodData.class).getData();
}
public class Food {
private String id;// private String 8289private String ,
private String title;// private String 油焖大虾private String ,
private String pic;// private String http://www.qubaobei.com/ios/cf/uploadfile/132/9/8289.jpgprivate String ,
private String collect_num;// private String 1584private String ,
private String food_str;// private String 大虾 葱 生姜 植物油 料酒private String ,
private String num;// 1584
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getPic() {
return pic;
}
public void setPic(String pic) {
this.pic = pic;
}
public String getCollect_num() {
return collect_num;
}
public void setCollect_num(String collect_num) {
this.collect_num = collect_num;
}
public String getFood_str() {
return food_str;
}
public void setFood_str(String food_str) {
this.food_str = food_str;
}
public String getNum() {
return num;
}
public void setNum(String num) {
this.num = num;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Food food = (Food) o;
if (!id.equals(food.id)) return false;
if (!title.equals(food.title)) return false;
if (!pic.equals(food.pic)) return false;
if (!collect_num.equals(food.collect_num)) return false;
if (!food_str.equals(food.food_str)) return false;
return num.equals(food.num);
}
@Override
public int hashCode() {
int result = id.hashCode();
result = 31 * result + title.hashCode();
result = 31 * result + pic.hashCode();
result = 31 * result + collect_num.hashCode();
result = 31 * result + food_str.hashCode();
result = 31 * result + num.hashCode();
return result;
}
}
}