Android将MySQL中的指定数据用ListView显示
时间: 2024-06-09 18:05:10 浏览: 120
要在 Android 应用中显示 MySQL 数据,需要执行以下步骤:
1.创建一个 MySQL 数据库,并将数据插入到其中。
2.创建一个 PHP 脚本,该脚本将从 MySQL 数据库中检索数据并将其返回为 JSON 格式。您可以使用 PHP 的 mysqli 函数来与 MySQL 数据库进行通信,并使用 json_encode 函数将结果转换为 JSON 格式。
3.在 Android 应用中,使用 Volley 或 OkHttp 等网络库从 PHP 脚本中检索数据。
4.使用 ListView 来显示检索到的数据。您可以使用自定义适配器来将数据填充到 ListView 中。
下面是一个简单的示例,演示如何将 MySQL 数据显示在 Android 应用中的 ListView 中。
1.创建 MySQL 数据库并插入数据。
假设您有一个名为“users”的表,其中包含“id”和“name”列。您可以使用以下 SQL 语句创建该表并插入一些数据。
CREATE TABLE users (
id INT(11) NOT NULL AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
PRIMARY KEY (id)
);
INSERT INTO users (name) VALUES ('John');
INSERT INTO users (name) VALUES ('Mary');
INSERT INTO users (name) VALUES ('Bob');
2.创建 PHP 脚本。
创建名为“get_users.php”的 PHP 脚本,该脚本将从 MySQL 数据库中检索用户数据并将其返回为 JSON 格式。
<?php
// MySQL 数据库连接信息
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "database";
// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);
// 检查连接是否成功
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
// 检索用户数据
$sql = "SELECT id, name FROM users";
$result = $conn->query($sql);
// 将数据转换为 JSON 格式
$data = array();
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
$data[] = $row;
}
}
echo json_encode($data);
// 关闭连接
$conn->close();
?>
3.从 Android 应用中检索数据。
使用 Volley 来从 PHP 脚本中检索数据。在您的 Android 应用中添加以下依赖项:
implementation 'com.android.volley:volley:1.2.0'
然后,创建一个名为“MainActivity.java”的活动,并添加以下代码:
public class MainActivity extends AppCompatActivity {
private ListView listView;
private UserAdapter adapter;
private List<User> userList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = findViewById(R.id.list_view);
userList = new ArrayList<>();
adapter = new UserAdapter(this, userList);
listView.setAdapter(adapter);
// 从 PHP 脚本中检索数据
String url = "http://yourdomain.com/get_users.php";
StringRequest stringRequest = new StringRequest(Request.Method.GET, url,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
JSONArray jsonArray = new JSONArray(response);
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
int id = jsonObject.getInt("id");
String name = jsonObject.getString("name");
User user = new User(id, name);
userList.add(user);
}
adapter.notifyDataSetChanged();
} catch (JSONException e) {
Log.e("MainActivity", "Error parsing JSON", e);
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e("MainActivity", "Error retrieving data", error);
}
});
Volley.newRequestQueue(this).add(stringRequest);
}
}
4.使用 ListView 显示数据。
创建一个名为“UserAdapter.java”的自定义适配器,并添加以下代码:
public class UserAdapter extends ArrayAdapter<User> {
private Context context;
private List<User> userList;
public UserAdapter(Context context, List<User> userList) {
super(context, 0, userList);
this.context = context;
this.userList = userList;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = convertView;
if (view == null) {
view = LayoutInflater.from(context).inflate(R.layout.list_item_user, parent, false);
}
User user = userList.get(position);
TextView idTextView = view.findViewById(R.id.id_text_view);
TextView nameTextView = view.findViewById(R.id.name_text_view);
idTextView.setText(String.valueOf(user.getId()));
nameTextView.setText(user.getName());
return view;
}
}
最后,创建一个名为“list_item_user.xml”的布局,用于定义 ListView 中的单个项目的外观。
<?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:padding="16dp">
<TextView
android:id="@+id/id_text_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:textAppearanceMedium"
android:textStyle="bold"
android:layout_marginEnd="16dp"/>
<TextView
android:id="@+id/name_text_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:textAppearanceMedium"/>
</LinearLayout>
现在,您可以运行应用程序,并查看您的 MySQL 数据在 ListView 中显示的情况。
阅读全文