Android获取MySQL中的一些数据用ListView显示
时间: 2024-06-09 12:05:10 浏览: 113
Android用listview显示数据库中的数据
要在 Android 应用中显示 MySQL 数据,需要进行以下步骤:
1. 创建一个 PHP 脚本,该脚本将从 MySQL 中检索数据并将其返回为 JSON 格式。例如,您可以创建一个名为“get_data.php”的脚本,该脚本将从 MySQL 中检索数据并将其返回为 JSON 格式。
2. 在 Android 应用程序中创建一个 ListView 控件,以显示从 MySQL 数据库中检索到的数据。
3. 使用 Volley 库或其他 HTTP 库,从 Android 应用程序中的 PHP 脚本中检索数据。
4. 将检索到的 JSON 数据解析为 Java 对象。
5. 使用适配器将 Java 对象列表传递给 ListView 控件,以显示数据。
以下是示例代码:
1. PHP 脚本示例(get_data.php):
```php
<?php
$host = "localhost";
$user = "username";
$password = "password";
$database = "database_name";
$con = mysqli_connect($host, $user, $password, $database);
$result = mysqli_query($con, "SELECT * FROM table_name");
$rows = array();
while ($row = mysqli_fetch_assoc($result)) {
$rows[] = $row;
}
echo json_encode($rows);
mysqli_close($con);
?>
```
2. Android 应用程序示例:
```java
public class MainActivity extends AppCompatActivity {
private ListView listView;
private List<Data> dataList = new ArrayList<>();
private DataAdapter dataAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = (ListView) findViewById(R.id.listview);
dataAdapter = new DataAdapter(this, dataList);
listView.setAdapter(dataAdapter);
StringRequest stringRequest = new StringRequest(Request.Method.GET, "http://yourwebsite.com/get_data.php",
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);
Data data = new Data();
data.setId(jsonObject.getInt("id"));
data.setName(jsonObject.getString("name"));
data.setDescription(jsonObject.getString("description"));
dataList.add(data);
}
dataAdapter.notifyDataSetChanged();
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(MainActivity.this, "Error: " + error.getMessage(), Toast.LENGTH_SHORT).show();
}
});
RequestQueue requestQueue = Volley.newRequestQueue(this);
requestQueue.add(stringRequest);
}
}
```
3. Data 类和 DataAdapter 类示例:
```java
public class Data {
private int id;
private String name;
private String description;
public Data() {
}
public Data(int id, String name, String description) {
this.id = id;
this.name = name;
this.description = description;
}
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;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
}
```
```java
public class DataAdapter extends BaseAdapter {
private Context context;
private List<Data> dataList;
public DataAdapter(Context context, List<Data> dataList) {
this.context = context;
this.dataList = dataList;
}
@Override
public int getCount() {
return dataList.size();
}
@Override
public Object getItem(int position) {
return dataList.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = LayoutInflater.from(context).inflate(R.layout.list_item, parent, false);
}
TextView nameTextView = (TextView) convertView.findViewById(R.id.name_textview);
TextView descriptionTextView = (TextView) convertView.findViewById(R.id.description_textview);
Data data = dataList.get(position);
nameTextView.setText(data.getName());
descriptionTextView.setText(data.getDescription());
return convertView;
}
}
```
将上述代码替换为您的MySQL表的表名、列名和主机名等信息,即可在 Android 应用程序中显示您的 MySQL 数据。
阅读全文