android

樱花馆长 / 2023-06-09 / 原文

Glide
    .with(myFragment)
    .load(url)
    .centerCrop()
    .placeholder(R.drawable.loading_spinner)
    .into(myImageView);


https://github.com/bumptech/glide
https://google.github.io/volley/simple.html
https://www.sojson.com/simple_json.html
implementation'com.android.volley:volley:1.2.1'
implementation 'com.github.bumptech.glide:glide:4.13.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.13.0'

MainActivity

package com.example.zz;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;

import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {
    private ArrayList<Goods> arrayList = new ArrayList<>();
    private ListView listView;
    private  MyAdapter myadapter;



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        listView = findViewById(R.id.list);
        RequestQueue queue = Volley.newRequestQueue(this);
        String url = "https://api-hmugo-web.itheima.net/api/public/v1/goods/search?pagesize=10";
        StringRequest stringRequest = new StringRequest(Request.Method.GET, url,
                new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {
                        Log.e("aaa",response);
                        try {
                            JSONObject jsonObject = new JSONObject(response);
                            JSONObject jsonObject1 = jsonObject.getJSONObject("message");
                            JSONArray jsonArray = jsonObject1.getJSONArray("goods");
                            for (int i=0;i<jsonArray.length();i++){
                                JSONObject jsonObject2 = jsonArray.getJSONObject(i);
                                String goods_name = jsonObject2.getString("goods_name");
                                String goods_small_logo = jsonObject2.getString("goods_small_logo");
                                Goods goods = new Goods(goods_name,goods_small_logo);
                                arrayList.add(goods);
                            }
                            myadapter = new MyAdapter(arrayList,MainActivity.this);
                            listView.setAdapter(myadapter);
                            listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                                @Override
                                public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                                    Intent intent = new Intent();
                                    intent.setClass(MainActivity.this,SecAct.class);
                                    startActivity(intent);
                                }
                            });
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                    }
                }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                error.printStackTrace();
            }
        });
        queue.add(stringRequest);
    }
}

MyAdapter

package com.example.zz;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

import com.bumptech.glide.Glide;

import java.util.ArrayList;

public class MyAdapter extends BaseAdapter {
    private ArrayList<Goods> arrayList;
    private LayoutInflater inflater;
    private Context context;

    public MyAdapter(ArrayList<Goods> arrayList, Context context) {
        this.arrayList = arrayList;
        this.inflater = LayoutInflater.from(context);
        this.context = context;
    }

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

    @Override
    public Object getItem(int i) {
        return arrayList.get(i);
    }

    @Override
    public long getItemId(int i) {
        return i;
    }

    @Override
    public View getView(int i, View view, ViewGroup viewGroup) {
        ViewHolder viewHolder;
        if (view ==null){
            viewHolder = new ViewHolder();
            view = inflater.inflate(R.layout.item,null);
            viewHolder.imgv = view.findViewById(R.id.img);
            viewHolder.tve = view.findViewById(R.id.tv);
            view.setTag(viewHolder);

        }else {
            viewHolder = (ViewHolder) view.getTag();
        }
        Glide.with(context)
                .load(arrayList.get(i).getGoods_small_logo())
                .placeholder(R.mipmap.ic_launcher)
                .into(viewHolder.imgv);
        viewHolder.tve.setText(arrayList.get(i).getGoods_name());
        return view;
    }
}
class ViewHolder{
    ImageView imgv;
    TextView tve;
}

SecAct

package com.example.zz;

import androidx.appcompat.app.AppCompatActivity;

public class SecAct extends AppCompatActivity {
}

activity_main

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <ListView
        android:id="@+id/list"
        android:layout_width="match_parent"
        android:layout_height="match_parent"></ListView>

</LinearLayout>

item

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <ImageView
        android:id="@+id/img"
        android:scaleType="fitXY"
        android:layout_width="80dp"
        android:layout_height="80dp"></ImageView>
    <TextView
        android:id="@+id/tv"
        android:text="1"
        android:textSize="20sp"
        android:layout_marginLeft="20dp"
        android:layout_width="match_parent"
        android:layout_height="80dp"></TextView>
</LinearLayout>

AndroidManifest

<uses-permission android:name="android.permission.INTERNET"></uses-permission>

<uses-library android:name="org.apache.http.legacy" android:required="false"/>

<activity android:name=".SecAct" />
android:useCleartextTraffic="true"

 Goods

package com.example.zz;

public class Goods {
    private String goods_name;
    private String goods_small_logo;

    public Goods(String goods_name, String goods_small_logo) {
        this.goods_name = goods_name;
        this.goods_small_logo = goods_small_logo;
    }

    public String getGoods_name() {
        return goods_name;
    }

    public void setGoods_name(String goods_name) {
        this.goods_name = goods_name;
    }

    public String getGoods_small_logo() {
        return goods_small_logo;
    }

    public void setGoods_small_logo(String goods_small_logo) {
        this.goods_small_logo = goods_small_logo;
    }
}