<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="16dp">
<!-- Spinner -->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="选择城市:" />
<Spinner
android:id="@+id/spinner_city"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:spinnerMode="dropdown" />
<!-- AutoCompleteTextView -->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:text="输入城市名:" />
<AutoCompleteTextView
android:id="@+id/autoCompleteTextView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="请输入城市"
android:completionThreshold="1" />
<!-- ListView -->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:text="新闻列表:" />
<ListView
android:id="@+id/listView_news"
android:layout_width="match_parent"
android:layout_height="200dp" />
<!-- SimpleAdapter List -->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:text="书籍信息列表:" />
<ListView
android:id="@+id/listView_books"
android:layout_width="match_parent"
android:layout_height="300dp" />
</LinearLayout>
</ScrollView>
package com.example.mobilelab;
import android.os.Bundle;
import android.widget.*;
import androidx.appcompat.app.AppCompatActivity;
import java.util.ArrayList;
import java.util.HashMap;
public class MainActivity extends AppCompatActivity {
private String[] cities = {"长沙市", "株洲市", "湘潭市", "衡阳市", "邵阳市", "岳阳市",
"常德市", "张家界市", "益阳市", "郴州市", "永州市", "怀化市", "娄底市", "湘西州"};
private String[] newsList = {"长沙举办科技展", "株洲高铁提速", "湘潭文旅融合新发展", "郴州发现新矿藏"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setupSpinner();
setupAutoCompleteTextView();
setupNewsListView();
setupBookListView();
}
// 1. Spinner 设置
private void setupSpinner() {
Spinner spinner = findViewById(R.id.spinner_city);
ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, cities);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(MainActivity.this, "你选择了:" + cities[position], Toast.LENGTH_SHORT).show();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {}
});
}
// 2. AutoCompleteTextView 设置
private void setupAutoCompleteTextView() {
AutoCompleteTextView autoText = findViewById(R.id.autoCompleteTextView);
ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_dropdown_item_1line, cities);
autoText.setAdapter(adapter);
autoText.setThreshold(1); // 输入1个字符就开始提示
autoText.setOnItemClickListener((parent, view, position, id) -> {
String selected = (String) parent.getItemAtPosition(position);
Toast.makeText(this, "你选择了:" + selected, Toast.LENGTH_SHORT).show();
});
}
// 3. 新闻 ListView
private void setupNewsListView() {
ListView listView = findViewById(R.id.listView_news);
ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, newsList);
listView.setAdapter(adapter);
listView.setOnItemClickListener((parent, view, position, id) -> {
Toast.makeText(this, "新闻:" + newsList[position], Toast.LENGTH_SHORT).show();
});
}
// 4. SimpleAdapter 实现图文混合列表
private void setupBookListView() {
ListView listView = findViewById(R.id.listView_books);
ArrayList<HashMap<String, Object>> data = new ArrayList<>();
for (int i = 0; i < 5; i++) {
HashMap<String, Object> map = new HashMap<>();
map.put("title", "《编程艺术 " + (i+1) + "》");
map.put("author", "作者_" + (i+1));
map.put("intro", "这是一本关于Android开发的优秀书籍,涵盖适配器、UI设计等内容。");
map.put("image", R.drawable.book_cover_placeholder); // 占位图
data.add(map);
}
SimpleAdapter adapter = new SimpleAdapter(
this,
data,
R.layout.item_book,
new String[]{"title", "author", "intro", "image"},
new int[]{R.id.tv_title, R.id.tv_author, R.id.tv_intro, R.id.iv_cover}
);
listView.setAdapter(adapter);
}
}
ID 名称与 Java 代码中一致吗?