马小跳_电商合成项目(上)

adapter

  1. GoodsAdapter`
    public abstract class BaseFragment extends Fragment {

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    int layoutId = initLayoutId();
    View rootView = inflater.inflate(layoutId,null);
    return rootView;
    }

    @Override
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    initView(view);
    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    initData();
    }

    public abstract void initData();

    public abstract int initLayoutId();

    public abstract void initView(View view);
    }`

base

  1. BaseFragment`
    public abstract class BaseFragment extends Fragment {

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    int layoutId = initLayoutId();
    View rootView = inflater.inflate(layoutId,null);
    return rootView;
    }

    @Override
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    initView(view);
    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    initData();
    }

    public abstract void initData();

    public abstract int initLayoutId();

    public abstract void initView(View view);
    }`

  2. BaseMvpActivity`
    public abstract class BaseFragment extends Fragment {

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    int layoutId = initLayoutId();
    View rootView = inflater.inflate(layoutId,null);
    return rootView;
    }

    @Override
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    initView(view);
    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    initData();
    }

    public abstract void initData();

    public abstract int initLayoutId();

    public abstract void initView(View view);
    }`

  3. BasePresenter`
    public abstract class BasePresenter {

    private WeakReference weakReference;

    public BasePresenter() {
    initModule();
    }

    public void attchView(V view) {
    weakReference = new WeakReference(view);
    }

    public V getView() {
    V view = weakReference.get();
    return view;
    }

    public void dettchView() {
    if (weakReference != null) {
    weakReference.clear();
    weakReference = null;
    }
    }

    public abstract void initModule();
    }`

  4. IBaseView
    public interface IBaseView { }

bean

  1. GoodsBean`
    public class GoodsBean implements Serializable {

    private int commodityId;

    private String commodityName;

    private String masterPic;

    private int price;

    private int saleNum;

    public int getCommodityId() {
    return commodityId;
    }

    public String getCommodityName() {
    return commodityName;
    }

    public String getMasterPic() {
    return masterPic;
    }

    public int getPrice() {
    return price;
    }

    public int getSaleNum() {
    return saleNum;
    }
    }`

  2. GoodsReseponse`
    public class GoodsReseponse implements Serializable {

    private List result ;

    private String message;

    private String status;

    public List getResult() {
    return result;
    }

    public String getMessage() {
    return message;
    }

    public String getStatus() {
    return status;
    }
    }`

fragment

  1. HomeFragment`
    public class HomeFragment extends BaseFragment {

    MySearchView mySearchView;
    private MyFlowView myFlowView;
    @Override
    public void initData() {

    }

    @Override
    public int initLayoutId() {
    return R.layout.fragment_home;
    }

    @Override
    public void initView(View view) {

     mySearchView=view.findViewById(R.id.mySearchView);
     myFlowView=view.findViewById(R.id.myFlowView);
     mySearchView.setSearchListener(new MySearchView.OnSearchListener() {
         @Override
         public void onSearch(String content) {
             myFlowView.addTag(content);
         }
     });
    
     myFlowView.setOnTagClickListener(new MyFlowView.OnTagClickListener() {
         @Override
         public void onTagClick(String content) {
             Intent intent = new Intent(getActivity(), ShowActivity.class);
             intent.putExtra("content",content);
             startActivity(intent);
         }
     });
    

    }
    }`

  2. MyFragment`
    public class MyFragment extends BaseFragment {

    private Button btnChangeColor;
    private Button btnJs;
    private WebView webView;

    @Override
    public void initData() {

     webView.loadUrl("https://abnerming8.github.io/abnerming.html?tdsourcetag=s_pctim_aiomsg");
     btnChangeColor.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View view) {
             webView.loadUrl("javaScript:changeColor('#ff0000')");
         }
     });
    
     btnJs.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View view) {
             webView.loadUrl("javaScript:toast()");
         }
     });
    
     webView.getSettings().setJavaScriptEnabled(true);
     webView.setWebViewClient(new WebViewClient());
    
     webView.setWebChromeClient(new WebChromeClient());
     webView.addJavascriptInterface(new ForJs(),"android");
    

    }

    @Override
    public int initLayoutId() {
    return R.layout.fragment_my;
    }

    @Override
    public void initView(View view) {

     btnChangeColor = (Button) view.findViewById(R.id.btnChangeColor);
     btnJs = (Button) view.findViewById(R.id.btnJs);
     webView = (WebView) view.findViewById(R.id.webView);
    

    }
    }`

mvp

  1. ShowActivity`
    public class ShowActivity extends BaseMvpActivity implements ShowContract.ShowView {
    private RecyclerView recyclerView;
    private GoodsAdapter goodsAdapter;
    @Override
    protected void initData() {
    Intent intent=getIntent();
    String content=intent.getStringExtra(“content”);
    presenter.show(content);
    }

    @Override
    protected ShowPresenter initPresenter() {
    return new ShowPresenter();
    }

    @Override
    protected void initView() {
    recyclerView=findViewById(R.id.recyclerView);
    StaggeredGridLayoutManager manager=new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL);
    recyclerView.setLayoutManager(manager);

    }

    @Override
    protected int initLayoutId() {
    return R.layout.activity_show;
    }

    @Override
    public void onShowSuccess(String data) {
    Gson gson=new Gson();
    GoodsReseponse goodsReseponse=gson.fromJson(data,GoodsReseponse.class);
    List result=goodsReseponse.getResult();

     goodsAdapter =new GoodsAdapter(ShowActivity.this,result);
     recyclerView.setAdapter(goodsAdapter);
    

    }

    @Override
    public void onShowFailer(String msg) {

     Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();
    

    }
    }`

  2. ShowContract`
    public class ShowContract {

    interface ShowView extends IBaseView {
    void onShowSuccess(String data);
    void onShowFailer(String msg);
    }

    interface ShowModule {
    void show(String content,ShowCallBack callBack);
    interface ShowCallBack{
    void onShowSuccess(String data);
    void onShowFailer(String msg);
    }
    }

    interface ShowPresenter{
    void show(String content);
    }
    }`

  3. ShowModule`
    public class ShowModule implements ShowContract.ShowModule {
    @Override
    public void show(String content, final ShowCallBack callBack) {
    String encode=null;
    try {
    encode= URLEncoder.encode(content,“utf-8”);
    } catch (UnsupportedEncodingException e) {
    e.printStackTrace();
    }
    String path = “http://172.17.8.100/small/commodity/v1/findCommodityByKeyword?page=1&count=10&keyword=” + encode;

     NetUtil.getInstance().doGet(path, new NetUtil.DataCallback() {
         @Override
         public void success(String s) {
             callBack.onShowSuccess(s);
         }
    
         @Override
         public void error(String s) {
    
             callBack.onShowFailer(s);
         }
     });
    

    }
    }`

  4. ShowPresenter`
    public class ShowPresenter extends BasePresenter<ShowContract.ShowView> implements ShowContract.ShowPresenter {
    private ShowModule showModule;
    @Override
    public void initModule() {
    showModule=new ShowModule();
    }

    @Override
    public void show(String content) {

     showModule.show(content, new ShowContract.ShowModule.ShowCallBack() {
         @Override
         public void onShowSuccess(String data) {
             getView().onShowSuccess(data);
         }
    
         @Override
         public void onShowFailer(String msg) {
             getView().onShowFailer(msg);
    
         }
     });
    

    }
    }`

net

  1. NetUtil`
    public class NetUtil {

    private static NetUtil netUtil;
    public static synchronized NetUtil getInstance(){
    if (netUtil==null){
    netUtil=new NetUtil();
    }
    return netUtil;
    }

    public boolean networkInfo(Context context){
    ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo info = manager.getActiveNetworkInfo();
    if (info!=null){
    return info.isConnected();
    }
    return false;
    }

    private static final String TAG = “NetUtil”;
    public void doGet(String path, final DataCallback callback){
    RequestQueue requestQueue = Volley.newRequestQueue(App.context);
    StringRequest request = new StringRequest(path, new Response.Listener() {
    @Override
    public void onResponse(String response) {
    callback.success(response);
    }
    }, new Response.ErrorListener() {
    @Override
    public void onErrorResponse(VolleyError error) {
    callback.error(error.getMessage());
    }
    });
    requestQueue.add(request);
    }

    public void doPost(String path, final Map<String,String> map, final DataCallback callback){
    RequestQueue requestQueue = Volley.newRequestQueue(App.context);
    StringRequest request = new StringRequest(StringRequest.Method.POST, path, new Response.Listener() {
    @Override
    public void onResponse(String response) {
    callback.success(response);
    }
    }, new Response.ErrorListener() {
    @Override
    public void onErrorResponse(VolleyError error) {
    callback.error(error.getMessage());
    }
    }){

         @Override
         protected Map<String, String> getParams() throws AuthFailureError {
             return map;
         }
    
         @Override
         public Map<String, String> getHeaders() throws AuthFailureError {
    
             HashMap<String,String> header = new HashMap<>();
             header.put("userId","257");
             header.put("sessionId","1569805585791257");
             return header;
    
         }
     };
     requestQueue.add(request);
    

    }

    public interface DataCallback{
    void success(String s);
    void error(String s);
    }
    }`

view

  1. MyFlowView`
    public class MyFlowView extends ViewGroup {

    private Context context;
    private int screenWith;
    private int tagColor;
    private float tagSize;
    private float tagSpace;
    private OnTagClickListener onTagClickListener;

    public MyFlowView(Context context) {
    super(context);
    this.context=context;
    init();
    initAttr(context, null);
    }

    public MyFlowView(Context context, AttributeSet attrs) {
    super(context, attrs);
    this.context=context;
    init();
    initAttr(context, attrs);
    }

    public MyFlowView(Context context, AttributeSet attrs, int defStyleAttr) {
    super(context, attrs, defStyleAttr);
    this.context=context;
    init();
    initAttr(context, attrs);
    }

    private void initAttr(Context context, AttributeSet attrs) {
    TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.MyFlowView);
    tagColor = typedArray.getColor(R.styleable.MyFlowView__tagColor, Color.CYAN);
    tagSize = typedArray.getDimension(R.styleable.MyFlowView__tagSize, 14);
    tagSpace = typedArray.getDimension(R.styleable.MyFlowView__tagSpace, 20);

    }

    private void init(){
    Resources resources = context.getResources();
    DisplayMetrics displayMetrics = resources.getDisplayMetrics();
    screenWith = displayMetrics.widthPixels;
    }

    @Override
    protected void onLayout(boolean b, int i, int i1, int i2, int i3) {
    int childCount = getChildCount();
    int left=0;
    int top=0;
    int right=0;
    int bottom=0;

     int space= (int) tagSpace;
     for (int j = 0; j < childCount; j++) {
         View childAt = getChildAt(j);
         childAt.measure(0,0);
         int measuredWidth = childAt.getMeasuredWidth();
         int measuredHeight = childAt.getMeasuredHeight();
    
         left=right+space;
         right=left+measuredWidth;
         if (right>screenWith){
             left=space;
             top=bottom+space;
         }
         right=left+measuredWidth;
         bottom=top+measuredHeight;
         childAt.layout(left,top,right,bottom);
     }
    

    }

    public void addTag(String tag){
    final TextView textView = new TextView(context);
    textView.setPadding(10,10,10,10);
    textView.setText(tag);
    addView(textView);

     textView.setOnClickListener(new OnClickListener() {
         @Override
         public void onClick(View view) {
             ObjectAnimator translationX = ObjectAnimator.ofFloat(textView, "scaleX",1);
             ObjectAnimator translationY = ObjectAnimator.ofFloat(textView, "scaleY",1);
    
             AnimatorSet set = new AnimatorSet();
             set.play(translationX).with(translationY);
             set.setDuration(500);
             set.start();
             set.addListener(new Animator.AnimatorListener() {
                 @Override
                 public void onAnimationStart(Animator animator) {
    
                 }
    
                 @Override
                 public void onAnimationEnd(Animator animator) {
                     if (onTagClickListener != null) {
                         onTagClickListener.onTagClick(textView.getText().toString());
                     }
                 }
    
                 @Override
                 public void onAnimationCancel(Animator animator) {
    
                 }
    
                 @Override
                 public void onAnimationRepeat(Animator animator) {
    
                 }
             });
         }
     });
    

    }

    public void setOnTagClickListener(OnTagClickListener onTagClickListener) {
    this.onTagClickListener = onTagClickListener;
    }

    public interface OnTagClickListener{
    void onTagClick(String content);
    }
    }`

  2. MySearchView`
    public class MySearchView extends LinearLayout {

    private ImageView ivLeft;
    private EditText etContent;
    private TextView tvRight;
    private OnSearchListener searchListener;

    public MySearchView(Context context) {
    super(context);
    init(context);
    initAttr(context, null);
    }

    public MySearchView(Context context, @Nullable AttributeSet attrs) {
    super(context, attrs);
    init(context);
    initAttr(context, attrs);
    }

    public MySearchView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
    super(context, attrs, defStyleAttr);
    init(context);
    initAttr(context, attrs);
    }

    private void init(Context context) {
    View rootView = LayoutInflater.from(context).inflate(R.layout.layout_my_search_view, this, true);
    ivLeft = (ImageView) rootView.findViewById(R.id.ivLeft);
    etContent = (EditText) rootView.findViewById(R.id.etContent);
    tvRight = (TextView) rootView.findViewById(R.id.tvRight);
    initListener();
    }

    private void initAttr(Context context, AttributeSet attrs) {
    TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.MySearchView);
    Drawable drawable = typedArray.getDrawable(R.styleable.MySearchView__leftImage);
    if (drawable != null) {
    ivLeft.setBackgroundDrawable(drawable);
    }
    float dimension = typedArray.getDimension(R.styleable.MySearchView__midSize, 12);
    etContent.setTextSize(dimension);
    String hint = typedArray.getString(R.styleable.MySearchView__hint);
    if (!TextUtils.isEmpty(hint)) {
    etContent.setHint(hint);
    }

    }

    private void initListener() {
    tvRight.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View view) {
    if (searchListener != null) {
    String content = etContent.getText().toString();
    searchListener.onSearch(content);
    }
    }
    });

    }

    public void setSearchListener(OnSearchListener searchListener) {
    this.searchListener = searchListener;
    }

    public interface OnSearchListener{
    void onSearch(String content);
    }
    }`

另附:

  1. App`
    public class App extends Application {

    public static Context context;

    @Override
    public void onCreate() {
    super.onCreate();
    context=this;
    }
    }`

  2. ForJs`

    public class ForJs {
    @JavascriptInterface
    public void show(){
    Toast.makeText(App.context, “别碰我!”, Toast.LENGTH_SHORT).show();
    }
    }`

    1. MainActivity`
      public class MainActivity extends AppCompatActivity {
      private ViewPager viewPager;
      private TabLayout tabLayout;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

     initView();
    

    }

    @SuppressLint(“WrongViewCast”)
    private void initView() {
    viewPager=findViewById(R.id.viewPager);
    tabLayout=findViewById(R.id.tabLayout);
    FragmentManager supportFragmentManager=getSupportFragmentManager();
    GoodsAdapter.HomePagerAdapter homePagerAdapter=new GoodsAdapter.HomePagerAdapter(supportFragmentManager);
    tabLayout.setupWithViewPager(viewPager);
    viewPager.setAdapter(homePagerAdapter);
    }
    }`

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值