在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
控件。
- 在
MainActivity.java
中,创建一个自定义的适配器CustomAdapter
,继承自BaseAdapter
。
public class CustomAdapter extends BaseAdapter { private Context context; private Listdata; public CustomAdapter(Context context, List data) { this.context = context; this.data = https://www.yisu.com/ask/data;"hljs">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); Listdata = https://www.yisu.com/ask/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
。用户可以在每个列表项中选择不同的选项。