RecyclerView多布局

来源:互联网 发布:2016中日贸易数据 编辑:程序博客网 时间:2024/05/23 15:00

xml模板文件1:

 <ImageView
        android:id="@+id/Recy_One_Image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@mipmap/ic_launcher" />


    <TextView
        android:id="@+id/Recy_One_Text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="memeda" />

xml.模板文件2:

 <ImageView
        android:id="@+id/Recy_Two_Image"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:src="@mipmap/ic_launcher" />


    <TextView
        android:id="@+id/Recy_Two_Text"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal"
        android:text="memeda" />

适配器:

    private List<MyBean.DataBean.ObjectsBean> mlist ;
    private Context context;
    private final static int Item_One = 1;
    private final static int Item_Two = 2;


    public MyAdapter(List<MyBean.DataBean.ObjectsBean> mlist, Context context) {
        this.mlist = mlist;
        this.context = context;
    }


    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        LayoutInflater inflater = LayoutInflater.from(context);
        View view;
        RecyclerView.ViewHolder holder;
        if (viewType == Item_One) {
            view = inflater.inflate(R.layout.recy_item_one, parent, false);
            holder = new HolderOne(view);
        } else {
            view = inflater.inflate(R.layout.recy_item_two, parent, false);
            holder = new HolderTwo(view);
        }
        view.setOnClickListener(this);
        return holder;
    }


    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
        MyBean.DataBean.ObjectsBean objectsBean = mlist.get(position);
        if (holder instanceof HolderOne) {
            ((HolderOne) holder).mTextOne.setText(objectsBean.getGmall_product().getTitle());
            Glide.with(context).load(objectsBean.getGmall_product()).into(((HolderOne) holder).mImageOne);
            ((HolderOne) holder).itemView.setTag(position);
        } else {
            ((HolderTwo) holder).mTextTwo.setText(objectsBean.getGmall_product().getTitle());
            Glide.with(context).load(objectsBean.getGmall_product().getPic_url()).into(((HolderTwo) holder).mImageTwo);
            ((HolderTwo) holder).itemView.setTag(position);
        }
    }


    @Override
    public int getItemCount() {
        return mlist.isEmpty() ? 0 : mlist.size();
    }


    @Override
    public int getItemViewType(int position) {
        if (position % 2 == 0) {
            return Item_One;
        } else {
            return Item_Two;
        }
    }




    class HolderOne extends RecyclerView.ViewHolder {
        private TextView mTextOne;
        private ImageView mImageOne;


        public HolderOne(View itemView) {
            super(itemView);
            mTextOne = (TextView) itemView.findViewById(R.id.Recy_One_Text);
            mImageOne = (ImageView) itemView.findViewById(R.id.Recy_One_Image);
        }
    }


    class HolderTwo extends RecyclerView.ViewHolder {
        private TextView mTextTwo;
        private ImageView mImageTwo;


        public HolderTwo(View itemView) {
            super(itemView);
            mTextTwo = (TextView) itemView.findViewById(R.id.Recy_Two_Text);
            mImageTwo = (ImageView) itemView.findViewById(R.id.Recy_Two_Image);
        }
    }


    public interface OnItemClick {
        void setOnItem(View v, int position);
    }


    private OnItemClick onitem;


    @Override
    public void onClick(View v) {
        if (onitem != null) {
            onitem.setOnItem(v, (int) v.getTag());
        }
    }


    public void setOnItemListener(OnItemClick item) {
        this.onitem = item;
    }

代码栏:

    private RecyclerView recy;
    private String mURL = "http://huixinguiyu.cn/Assets/js/competitive.js";
    public MyAdapter myAdapter;
    private List<MyBean.DataBean.ObjectsBean> objects = new ArrayList<>();
    private Handler handler = new Handler() {




        @Override
        public void handleMessage(Message msg) {
            String obj = (String) msg.obj;
            Gson gson = new Gson();
            MyBean myBean = gson.fromJson(obj, MyBean.class);
            objects = myBean.getData().getObjects();
            myAdapter = new MyAdapter(objects, HomeActivity.this);
            recy.setAdapter(myAdapter);

//适配器监听跳转详情页面:
            myAdapter.setOnItemListener(new MyAdapter.OnItemClick() {
                @Override
                public void setOnItem(View v, int position) {
                    Intent intent = new Intent(HomeActivity.this, XiangQActivity.class);
                    intent.putExtra("aaa", HomeActivity.this.objects.get(position).getGmall_product().getPic_url());
                    intent.putExtra("bbb", HomeActivity.this.objects.get(position).getGmall_product().getTitle());
                    startActivity(intent);
                }
            });
        }
    };


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_home);
        initView();
        initData();
    }


    private void initData() {
        OkHttpClient okHttpClient = new OkHttpClient();
        Request request = new Request.Builder().url(mURL).build();
        okHttpClient.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {


            }


            @Override
            public void onResponse(Call call, Response response) throws IOException {
                Message message = new Message();
                message.obj = response.body().string();
                handler.sendMessage(message);
            }
        });
    }


    private void initView() {
        recy = (RecyclerView) findViewById(R.id.recy);
        LinearLayoutManager manager = new LinearLayoutManager(HomeActivity.this);
        recy.setLayoutManager(manager);
    }



跳转到详情页面+分享到qq:



    private void initData() {
        Intent intent=getIntent();
        String aaa = intent.getStringExtra("aaa");
        String bbb = intent.getStringExtra("bbb");
        Glide.with(XiangQActivity.this).load(aaa).into(image);
        title.setText(bbb);
        this.aaa=intent.getStringExtra("aaa");
        if (Build.VERSION.SDK_INT >= 23) {
            String[] mPermissionList = new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.CALL_PHONE, Manifest.permission.READ_LOGS, Manifest.permission.READ_PHONE_STATE, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.SET_DEBUG_APP, Manifest.permission.SYSTEM_ALERT_WINDOW, Manifest.permission.GET_ACCOUNTS, Manifest.permission.WRITE_APN_SETTINGS};
            ActivityCompat.requestPermissions(this, mPermissionList, 123);
        }
    }


    private void initView() {
        btn_send = (Button) findViewById(R.id.btn_send);
        image = (ImageView) findViewById(R.id.img);
        title = (TextView) findViewById(R.id.title);


        btn_send.setOnClickListener(this);
    }


    @Override
    public void onClick(View v) {
        UMImage image = new UMImage(XiangQActivity.this,aaa);
        switch (v.getId()) {
            case R.id.btn_send:
                new ShareAction(XiangQActivity.this)
                        .withText("molu")
                        .withMedia(image)
                        .setDisplayList(SHARE_MEDIA.SINA,SHARE_MEDIA.QQ,SHARE_MEDIA.WEIXIN)
                        .setCallback(new UMShareListener() {
                            @Override
                            public void onStart(SHARE_MEDIA share_media) {


                            }


                            @Override
                            public void onResult(SHARE_MEDIA share_media) {


                            }


                            @Override
                            public void onError(SHARE_MEDIA share_media, Throwable throwable) {


                            }


                            @Override
                            public void onCancel(SHARE_MEDIA share_media) {


                            }
                        }).open();
                break;
        }
    }



原创粉丝点击