阅读量:129
在Android开发中,Spinner是一个下拉列表控件,可以用于在列表视图中进行嵌套
- 首先,创建一个新的Android项目,并在
activity_main.xml布局文件中添加一个ListView控件。
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
- 接下来,创建一个自定义的列表项布局
list_item.xml,其中包含一个TextView和一个Spinner控件。
<?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="8dp">
<TextView
android:id="@+id/textView"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Item Text" />
<Spinner
android:id="@+id/spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
- 在
MainActivity.java中,创建一个自定义的适配器CustomAdapter,继承自BaseAdapter。
public class CustomAdapter extends BaseAdapter {
private Context context;
private List data;
public CustomAdapter(Context context, List data) {
this.context = context;
this.data = data;
}
@Override
public int getCount() {
return data.size();
}
@Override
public Object getItem(int position) {
return data.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 textView = convertView.findViewById(R.id.textView);
Spinner spinner = convertView.findViewById(R.id.spinner);
textView.setText(data.get(position));
ArrayAdapter spinnerAdapter = ArrayAdapter.createFromResource(context,
R.array.spinner_items, android.R.layout.simple_spinner_item);
spinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(spinnerAdapter);
return convertView;
}
}
- 在
strings.xml中添加Spinner的数据源。
SpinnerInListView
- Option 1
- Option 2
- Option 3
- 最后,在
MainActivity.java中设置ListView的适配器。
public class MainActivity extends AppCompatActivity {
private ListView listView;
private CustomAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = findViewById(R.id.listView);
List data = new ArrayList<>();
for (int i = 1; i <= 20; i++) {
data.add("Item " + i);
}
adapter = new CustomAdapter(this, data);
listView.setAdapter(adapter);
}
}
现在运行应用程序,你将看到一个包含20个列表项的ListView,每个列表项都有一个TextView和一个Spinner。用户可以在每个列表项中选择不同的选项。