android:用arrayadapter显示数据到listview
一,代码:
1,接口返回的数据:
1,xml:
activity:
<?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:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="16dp"
android:orientation="vertical"
android:background="#FF6600"
tools:context=".MainActivity">
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="成绩单"
android:textSize="24sp"
android:textColor="#333"
android:layout_gravity="center_horizontal"
android:paddingBottom="16dp" />
<ListView
android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:divider="@android:color/darker_gray"
android:dividerHeight="2dp"
android:background="#FFFFFF"
android:padding="8dp"
android:layout_marginTop="10dp"
android:elevation="4dp" />
</LinearLayout>
单行:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="10dp">
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical"
android:paddingStart="16dp"
android:paddingEnd="16dp"
android:gravity="center_vertical">
<TextView
android:id="@+id/userId"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="商品名"
android:textSize="18sp"
android:textColor="@android:color/black" />
<TextView
android:id="@+id/userName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="描述"
android:textSize="14sp"
android:textColor="@android:color/darker_gray" />
</LinearLayout>
</LinearLayout>
2,model
package com.example.okdemo1.model;
public class UserListItemEntity {
private int id;
private String name;
public UserListItemEntity(int id, String name) {
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
3,adapter
package com.example.okdemo1.adapter;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import com.example.okdemo1.R;
import com.example.okdemo1.model.UserListItemEntity;
import java.util.List;
public class UserAdapter extends ArrayAdapter<UserListItemEntity> {
public UserAdapter(Context context, List<UserListItemEntity> users) {
super(context, 0, users);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// 获取当前用户对象
UserListItemEntity user = getItem(position);
// 如果视图为空,创建新视图
if (convertView == null) {
convertView = LayoutInflater.from(getContext()).inflate(R.layout.item_user, parent, false);
}
// 获取视图中的 TextView
TextView usernameTextView = convertView.findViewById(R.id.userId);
TextView emailTextView = convertView.findViewById(R.id.userName);
// 设置 TextView 的内容
usernameTextView.setText(String.valueOf(user.getId()));
emailTextView.setText(user.getName());
return convertView;
}
}
4,activity
package com.example.okdemo1.activity;
import android.os.Bundle;
import android.widget.ListView;
import androidx.activity.EdgeToEdge;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import com.example.okdemo1.R;
import com.example.okdemo1.adapter.UserAdapter;
import com.example.okdemo1.model.UserListEntity;
import com.example.okdemo1.model.UserListItemEntity;
import com.google.gson.Gson;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
public class MylistActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
EdgeToEdge.enable(this);
setContentView(R.layout.activity_mylist);
doGetData();
}
//以get方式访问互联网上的页面,并返回数据
private void doGetData() {
//1.创建HttpClient对象
OkHttpClient okHttpClient = new OkHttpClient();
//2.获取request对象
Request.Builder builder = new Request.Builder().url("http://www.testit.net/json.php");
Request request = builder.build();
//3.异步请求发起
okHttpClient.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(@NonNull Call call, @NonNull IOException e) {
}
@Override
public void onResponse(@NonNull Call call, @NonNull Response response) throws IOException {
try {
String result = response.body().string();
//解析json到entity对象中
Gson gson = new Gson();
UserListEntity person = gson.fromJson(result, UserListEntity.class);
List<UserListItemEntity> listUser = person.getData().getList();
runOnUiThread(new Runnable() {
@Override
public void run() {
// 更新UI,例如显示数据
UserAdapter adapter = new UserAdapter(MylistActivity.this, listUser);
// 将 UserAdapter 设置为 ListView 的适配器
ListView listView = findViewById(R.id.list);
listView.setAdapter(adapter);
}
});
} catch (IOException e) {
throw new RuntimeException(e);
}
}
});
}
}