搜索列表+商品详情

package com.bawei.monthone.fragment;

import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import com.bawei.monthone.R;
import com.bawei.monthone.activity.DetailedActivity;
import com.bawei.monthone.adapter.SearchAdapter;
import com.bawei.monthone.base.BaseFragment;
import com.bawei.monthone.bean.KeyWordBean;
import com.bawei.monthone.contract.SearchContract;
import com.bawei.monthone.presenter.SearchPresenter;
import com.bawei.monthone.view.Search;

import java.util.List;

/**
 */
public class HomeFragment extends BaseFragment implements SearchContract.SearchView {

    private Search search;
    private TextView tv_se;
    private EditText et_search;
    private SearchPresenter searchPresenter;
    private RecyclerView rv;

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.home_frag, container, false);
       //初始化控件
        search = view.findViewById(R.id.search);
        et_search = view.findViewById(R.id.et_search);
        tv_se = view.findViewById(R.id.tv_search);
        rv = view.findViewById(R.id.search_item);
        GridLayoutManager gridLayoutManager = new GridLayoutManager(getContext(), 2);
        rv.setLayoutManager(gridLayoutManager);
        isPrepared = true;

        searchPresenter = new SearchPresenter();
        searchPresenter.attachView(this);
        onLoad();
        return view;
    }

    @Override
    protected void onLoad() {
        //加载数据
        if (!isPrepared || !isVisible) {
            return;
        }
        tv_se.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int page=1;
                int count=10;
                String text = et_search.getText().toString().trim();
                searchPresenter.requestModel(text);
            }
        });
    }

    @Override
    public void searchData(List<KeyWordBean.ResultBean> result) {
        SearchAdapter searchAdapter = new SearchAdapter(getContext(), result);
        rv.setAdapter(searchAdapter);
        searchAdapter.setItemClickListener(new SearchAdapter.onItemClickListener() {
            @Override
            public void onCklic(int i) {
                Intent intent = new Intent(getContext(), DetailedActivity.class);
                intent.putExtra("id", "" + i);
                startActivity(intent);
            }
        });
    }
}
//搜索的适配器
package com.bawei.monthone.adapter;

import android.content.Context;
import android.net.Uri;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import com.bawei.monthone.R;
import com.bawei.monthone.bean.KeyWordBean;
import com.facebook.drawee.view.SimpleDraweeView;

import java.util.List;

/**
 */
public class SearchAdapter extends RecyclerView.Adapter<SearchAdapter.MyViewHolder>{
    private Context context;
    private List<KeyWordBean.ResultBean> result;
    private int commodityId;

    public SearchAdapter(Context context, List<KeyWordBean.ResultBean> result) {
        this.context = context;
        this.result = result;
    }

    @NonNull
    @Override
    public MyViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View view = LayoutInflater.from(context).inflate(R.layout.search_item, viewGroup, false);
        MyViewHolder myViewHolder = new MyViewHolder(view);
        return myViewHolder;
    }

    @Override
    public void onBindViewHolder(@NonNull MyViewHolder myViewHolder, int i) {
        String masterPic = result.get(i).getMasterPic();
        String commodityName = result.get(i).getCommodityName();
        commodityId = result.get(i).getCommodityId();
        int price = result.get(i).getPrice();
        myViewHolder.s_title.setText(commodityName);
        myViewHolder.s_price.setText("¥:"+price);
        Uri uri = Uri.parse(masterPic);
        myViewHolder.img.setImageURI(uri);
        myViewHolder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                itemClickListener.onCklic(commodityId);
            }
        });
    }

    @Override
    public int getItemCount() {
        return result.size();
    }

    class MyViewHolder extends RecyclerView.ViewHolder {

        private final SimpleDraweeView img;
        private final TextView s_price;
        private final TextView s_title;

        public MyViewHolder(@NonNull View itemView) {
            super(itemView);
            img = itemView.findViewById(R.id.search_img);
            s_price = itemView.findViewById(R.id.search_price);
            s_title = itemView.findViewById(R.id.search_title);
        }
    }
    public interface onItemClickListener{
        void onCklic(int i);
    }
    private onItemClickListener itemClickListener;

    public void setItemClickListener(onItemClickListener itemClickListener) {
        this.itemClickListener = itemClickListener;
    }
}
//详情的页面--布局
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#fff"
    android:orientation="vertical">

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent">


        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical">

            <RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="#fff">


                <android.support.v4.view.ViewPager
                    android:id="@+id/pager"
                    android:layout_width="match_parent"
                    android:layout_height="260dp">

                </android.support.v4.view.ViewPager>

                <TextView
                    android:id="@+id/numbre"
                    android:layout_width="wrap_content"
                    android:layout_height="260dp"
                    android:layout_alignParentRight="true"
                    android:gravity="right|bottom"
                    android:text="显示的当前页面"
                    android:textColor="#0f0"
                    android:textSize="35sp" />
            </RelativeLayout>

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginLeft="40dp"
                android:layout_marginTop="10dp"
                android:layout_marginRight="40dp"
                android:orientation="horizontal">

                <TextView
                    android:id="@+id/shoopprice"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:text="价格"
                    android:textColor="#f00"
                    android:textSize="30sp" />

                <TextView
                    android:id="@+id/shoopnum"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_vertical"
                    android:text="数量"
                    android:textSize="22sp" />

            </LinearLayout>

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginLeft="35dp"
                android:layout_marginTop="12dp"
                android:layout_marginRight="40dp"
                android:orientation="vertical">

                <TextView
                    android:id="@+id/shoopname"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="名称"
                    android:textSize="25sp" />
            </LinearLayout>

            <RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent">

                <WebView
                    android:id="@+id/webView"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content">

                </WebView>


            </RelativeLayout>
        </LinearLayout>

    </ScrollView>

</RelativeLayout>
//详情的Activity
package com.bawei.monthone.activity;

import android.content.Intent;
import android.content.SharedPreferences;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.widget.ImageView;
import android.widget.TextView;

import com.bawei.monthone.R;
import com.bawei.monthone.adapter.DetailedAdapter;
import com.bawei.monthone.bean.DetailedBean;
import com.bawei.monthone.contract.DetailedContract;
import com.bawei.monthone.presenter.DetailedPresenter;
import com.bumptech.glide.Glide;

import java.util.ArrayList;

public class DetailedActivity extends AppCompatActivity implements DetailedContract.DetailedView {
    private DetailedContract.DetailedPresenter detailedPresenter;
    private SharedPreferences sp;
    private TextView shop_price;
    private TextView name;
    private TextView num;
    private ViewPager pager;
    private TextView numbre;
    private ArrayList<ImageView> imageViews;
    private String[] split;
    private WebView webView;
    private int commodityId;
    private int saleNum;
    private int price;
    private String commodityName;
    private String img;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_detailed);
        shop_price = findViewById(R.id.shoopprice);
        name = findViewById(R.id.shoopname);
        num = findViewById(R.id.shoopnum);
        pager = findViewById(R.id.pager);
        numbre = findViewById(R.id.numbre);
        webView = findViewById(R.id.webView);

        detailedPresenter = new DetailedPresenter();
        detailedPresenter.attachView(this);
        Intent intent = getIntent();
        String id = intent.getStringExtra("id");
        detailedPresenter.requestModel(id);
    }

    @Override
    public void detailedData(DetailedBean.ResultBean result) {
        commodityName = result.getCommodityName();
        saleNum = result.getSaleNum();
        price = result.getPrice();
        String details = result.getDetails();
        commodityId = result.getCommodityId();
        /*webView.loadData(details, "text/html; charset=UTF-8", null);

        //webview的自适应屏幕
        WebSettings settings = webView.getSettings();
        settings.setUseWideViewPort(true);
        settings.setLoadWithOverviewMode(true);*/
        WebSettings settings = webView.getSettings();
        settings.setJavaScriptEnabled(true);
        String s = "<script type=\"text/javascript\">" +

                "var imgs=document.getElementsByTagName('img');" +
                "for(var i = 0; i<imgs.length; i++){" +
                "imgs[i].style.width='100%';" +
                "imgs[i].style.height='auto';" +
                "}" +
                "</script>";
        webView.loadDataWithBaseURL(null, details + s + "<html><body>", "text/html", "utf-8", null);
        name.setText(commodityName);
        num.setText("已售" + saleNum + "件");
        shop_price.setText("¥:" + price);
        imageViews = new ArrayList<>();
        String picture = result.getPicture();
        split = picture.split(",");

        for (int i = 0; i < split.length; i++) {
            ImageView imageView = new ImageView(DetailedActivity.this);
            Glide.with(DetailedActivity.this).load(split[i]).into(imageView);
            imageViews.add(imageView);
            DetailedAdapter detailedAdapter = new DetailedAdapter(DetailedActivity.this, imageViews);
            pager.setAdapter(detailedAdapter);

        }
        img = split[0];

        int i = pager.getCurrentItem() + 1;
        numbre.setText(i + "/" + split.length);
        pager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int i, float v, int i1) {

            }

            @Override
            public void onPageSelected(int i) {
                int ii = pager.getCurrentItem() + 1;
                numbre.setText(ii + "/" + split.length);
            }

            @Override
            public void onPageScrollStateChanged(int i) {

            }
        });
    }
}
//详情的适配器
package com.bawei.monthone.adapter;

import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v4.view.PagerAdapter;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;

import java.util.ArrayList;

/**
 */
public class DetailedAdapter extends PagerAdapter {
    private Context context;
    private ArrayList<ImageView> imageViews;

    public DetailedAdapter(Context context, ArrayList<ImageView> imageViews) {
        this.context = context;
        this.imageViews = imageViews;
    }

    @Override
    public int getCount() {
        return imageViews.size();
    }

    @Override
    public boolean isViewFromObject(@NonNull View view, @NonNull Object o) {
        return view == o;
    }

    @NonNull
    @Override
    public Object instantiateItem(@NonNull ViewGroup container, int position) {
        ImageView imageView = imageViews.get(position);
        container.addView(imageView);

        return imageView;

    }

    @Override
    public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {

        container.removeView((View) object);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值