Andriodjie——RecyclerView点击查看商品详情


/**
 * 展示商品的适配器
 */

import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import com.example.myapp.R;
import com.example.myapp.ShopBean.BiaoBean;
import com.nostra13.universalimageloader.core.ImageLoader;

public class BiaoAdapter extends RecyclerView.Adapter<BiaoAdapter.MyHolder> {

    OnItemClickListener listener;
    public void setOnItemClickListener(OnItemClickListener listener){
        this.listener=listener;
    }



    private Context context;
    private BiaoBean biaobean;

    public BiaoAdapter(Context context, BiaoBean biaobean) {
        this.context = context;
        this.biaobean = biaobean;
    }

    @Override
    public MyHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = View.inflate(context, R.layout.shop_item, null);
        MyHolder holder = new MyHolder(view);
        view.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                listener.onItemClick((int) view.getTag());
            }
        });
        return holder;
    }

    @Override
    public void onBindViewHolder(MyHolder holder, int position) {
        holder.names.setText(biaobean.getDatas().getGoods_list().get(position).getGoods_name());
        holder.names.setText(biaobean.getDatas().getGoods_list().get(position).getGoods_price());
        ImageLoader.getInstance().displayImage(biaobean.getDatas().getGoods_list().get(position).getGoods_image_url(),holder.images);
        holder.itemView.setTag(position);
    }

    @Override
    public int getItemCount() {
        return biaobean.getDatas().getGoods_list().size();
    }

    class MyHolder extends RecyclerView.ViewHolder {

        final TextView names;
        final TextView prices;
        final ImageView images;

        public MyHolder(View itemView) {
            super(itemView);
            names = (TextView) itemView.findViewById(R.id.names);
            prices = (TextView) itemView.findViewById(R.id.prices);
            images=(ImageView) itemView.findViewById(R.id.images);
        }
    }
    public interface OnItemClickListener{
        public void onItemClick(int position);
    }
}

/**
 * 展示商品并点击跳转到详情页面
 */

import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.os.Parcelable;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.widget.EditText;
import android.widget.Toast;

import com.example.myapp.R;
import com.example.myapp.ShopBean.Bean;
import com.example.myapp.ShopBean.BiaoBean;
import com.example.myapp.SpacesItemDecoration;
import com.example.myapp.TheAdapter.BiaoAdapter;
import com.example.myapp.TheAdapter.MyAdapter;
import com.google.gson.Gson;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.Serializable;
import java.util.List;

import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;


public class Shangpin extends AppCompatActivity {
    private RecyclerView shopRy;
    private BiaoBean biaobean;
    private BiaoAdapter biaoAdapter;
    private List<BiaoBean.DatasBean.GoodsListBean> goods_list;

    private Handler hand = new Handler(){
        @Override
        public void handleMessage(Message msg) {

            super.handleMessage(msg);
            String s = (String) msg.obj;
            Gson gson=new Gson();
            biaobean=gson.fromJson(s,BiaoBean.class);
            goods_list=biaobean.getDatas().getGoods_list();

            biaoAdapter=new BiaoAdapter(Shangpin.this,biaobean);
            shopRy.setAdapter(biaoAdapter);

            biaoAdapter.setOnItemClickListener(new BiaoAdapter.OnItemClickListener() {

                @Override
                public void onItemClick(int position) {

                    BiaoBean.DatasBean.GoodsListBean goodsListBean=goods_list.get(position);
                    Intent intent1=new Intent(Shangpin.this,ShopXiang.class);
                    intent1.putExtra("goodsListBean", (Serializable) goodsListBean);

                    startActivity(intent1);
                }
            });

        }
    };
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.shanpin);
        shopRy=(RecyclerView)findViewById(R.id.shop_ry);
        GridLayoutManager linear=new GridLayoutManager(Shangpin.this,1);
        shopRy.setLayoutManager(linear);
        OkHttpClient mOkHttpClient = new OkHttpClient();
        //创建一个Request
        Request request = new Request.Builder()
                .url("http://169.254.177.190/mobile/index.php?act=goods&op=goods_list&page=100")
                .build();

        mOkHttpClient.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {

            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                InputStream inputStream = response.body().byteStream();
                final ByteArrayOutputStream baos = new ByteArrayOutputStream();
                int i;
                final byte[] b = new byte[1024];
                while( (i = inputStream.read(b)) != -1 ){
                    baos.write(b,0,i);
                }

                Message msg = Message.obtain();
                msg.obj = baos.toString();
                hand.sendMessage(msg);
            }
        });

    }
}

/**
 * 根据商品列表传来的id按需求显示需要的数据
 */
public class ShopXiang extends AppCompatActivity {
    private String goods_id;
    private ShopxiangBean biaobean;


    private ImageView shop_images;
    private TextView tv_name;

    private Handler hand = new Handler(){
        @Override
        public void handleMessage(Message msg) {

            super.handleMessage(msg);
            String s = (String) msg.obj;
            Gson gson=new Gson();
            biaobean=gson.fromJson(s,ShopxiangBean.class);
            List<ShopxiangBean.DatasBean.GoodsListBean> goods_list = biaobean.getDatas().getGoods_list();
        }
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.shopxiang);
        //定义控件
        // shop_ry =  (RecyclerView)findViewById(R.id.shop_recyclerview);
        shop_images=(ImageView)findViewById(R.id.shop_imges) ;
        tv_name=(TextView)findViewById(R.id.tv_name);
        //接受传来的数据
        Intent intent = getIntent();
        BiaoBean.DatasBean.GoodsListBean goodsListBean = (BiaoBean.DatasBean.GoodsListBean) intent.getSerializableExtra("goodsListBean");

        //获得id
        goods_id = goodsListBean.getGoods_id();
        //获得图片
        String url= goodsListBean.getGoods_image_url();
        ImageLoader.getInstance().displayImage(url,shop_images);

        //获得名字
        String goods_name = goodsListBean.getGoods_name();
        tv_name.setText(goods_name);

        //OkHttp获取数据
        OkHttpClient mOkHttpClient = new OkHttpClient();
        //创建一个Request
        final Request request = new Request.Builder()
                .url("http://169.254.177.190/mobile/index.php?act=goods&op=goods_detail&goods_id="+goods_id)
                .build();

        mOkHttpClient.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {

            }
            @Override
            public void onResponse(Call call, Response response) throws IOException {
                String json=response.body().string();
                Message msg = Message.obtain();
                msg.obj = json;
                hand.sendMessage(msg);
            }
        });
    }

}
/**
 * 用ImageLoader解析图片

*/

public class MyApp extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        ImageLoaderConfiguration con = ImageLoaderConfiguration.createDefault(this);
        ImageLoader.getInstance().init(con);

    }
}
/**
 * XML
*/
Andriodjie——RecyclerView点击查看商品详情

shanpin.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <android.support.v7.widget.RecyclerView
        android:id="@+id/shop_ry"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">

    </android.support.v7.widget.RecyclerView>
</LinearLayout>
shop_item.xml
<?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="match_parent">
    <ImageView
        android:id="@+id/images"
        android:layout_width="150dp"
        android:layout_height="150dp"
        android:src="@mipmap/ic_launcher"
        />
    <TextView
        android:id="@+id/names"
        android:layout_width="200dp"
        android:layout_height="30dp"
        android:text="名字"
        android:textSize="20dp"
        android:layout_marginTop="40dp"
        android:layout_toRightOf="@+id/images" />
    <TextView
        android:id="@+id/prices"
        android:layout_width="200dp"
        android:layout_height="30dp"
        android:text="价格"
        android:textSize="20dp"
        android:layout_marginTop="100dp"
        android:layout_toRightOf="@+id/images" />
</RelativeLayout>
shopxiang.xml
<?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="match_parent">
    <RelativeLayout
        android:id="@+id/contentxianqing_head"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="15dp"
        >
        <ImageView
            android:id="@+id/contentxianqing_back"
            android:layout_width="40dp"
            android:layout_height="40dp"
            android:src="@drawable/poplayer_close_btn"/>

        <ImageView
            android:layout_width="40dp"
            android:layout_height="40dp"
            android:src="@drawable/tb_icon_more_servers_56"
            android:layout_alignParentRight="true"
            />
    </RelativeLayout>
    <ImageView
        android:id="@+id/shop_imges"
        android:layout_width="match_parent"
        android:layout_height="300dp" />

    <TextView
        android:id="@+id/tv_name"
        android:layout_marginTop="310dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="20sp"
        />
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_alignParentBottom="true"
        >
        <LinearLayout
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            >
            <TextView
                android:layout_width="0dp"
                android:layout_weight="1"
                android:layout_height="wrap_content" />
            <RadioButton
                android:id="@+id/contentxianqing_dianpu"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="店铺"
                android:button="@null"
                />
            <TextView
                android:layout_width="0dp"
                android:layout_weight="1"
                android:layout_height="wrap_content" />
            <RadioButton
                android:id="@+id/contentxianqing_kefu"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="客服"
                android:button="@null"

                />
            <TextView
                android:layout_width="0dp"
                android:layout_weight="1"
                android:layout_height="wrap_content" />
            <RadioButton
                android:id="@+id/contentxianqing_shoucang"
                android:layout_width="wrap_content"
                android:layout_height="57dp"
                android:text="收藏"
                android:button="@null"

                />
            <TextView
                android:layout_width="0dp"
                android:layout_weight="1"
                android:layout_height="wrap_content" />
        </LinearLayout>
        <LinearLayout
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:layout_marginTop="6dp">
            <Button
                android:id="@+id/contentxianqing_gouwuche"
                android:layout_width="0dp"
                android:layout_weight="1"
                android:layout_height="wrap_content"
                android:text="加入购物车"
                android:background="#FF9C02"/>
            <Button
                android:id="@+id/contentxianqing_goumai"
                android:layout_width="0dp"
                android:layout_weight="1"
                android:layout_height="wrap_content"
                android:text="立即购买"
                android:background="#FF6F00"
                />
        </LinearLayout>
    </LinearLayout>


</RelativeLayout>