RecyclerView的网络展示

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;
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值