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

}

二,测试效果:

posted @ 2025-04-26 08:46  刘宏缔的架构森林  阅读(13)  评论(0)    收藏  举报