android
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; } }