文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

使用Spinner Android对自定义Listview项进行排序

2023-09-26 11:11

关注

要使用Spinner对自定义ListView项进行排序,你需要完成以下步骤:
1. 在布局文件中添加一个Spinner组件,并定义一个适配器来为其提供数据。
2. 创建一个用于排序的函数,该函数将根据用户选择的排序选项对ListView项进行排序。
3. 在Activity中,获取Spinner的引用,并设置一个OnItemSelectedListener来监听选项的变化。
4. 在OnItemSelectedListener中,根据选项的变化调用排序函数,然后更新ListView的适配器。
下面是一个示例代码,来演示如何使用Spinner对自定义ListView项进行排序:
MainActivity.java:
```java
public class MainActivity extends AppCompatActivity {
private ListView listView;
private Spinner spinner;
private CustomListAdapter adapter;
private ArrayList itemList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = findViewById(R.id.listView);
spinner = findViewById(R.id.spinner);
// 创建一个包含数据的ArrayList
itemList = new ArrayList<>();
itemList.add(new Item("Item 1", 10));
itemList.add(new Item("Item 2", 5));
itemList.add(new Item("Item 3", 8));
itemList.add(new Item("Item 4", 3));
itemList.add(new Item("Item 5", 12));
// 创建适配器并设置给ListView
adapter = new CustomListAdapter(this, itemList);
listView.setAdapter(adapter);
// 创建一个排序函数
ArrayAdapter spinnerAdapter = ArrayAdapter.createFromResource(this,
R.array.sort_options, android.R.layout.simple_spinner_item);
spinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(spinnerAdapter);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView adapterView, View view, int position, long l) {
// 根据排序选项对itemList进行排序
if (position == 0) {
Collections.sort(itemList, new Comparator() {
@Override
public int compare(Item item1, Item item2) {
return item1.getName().compareTo(item2.getName());
}
});
} else if (position == 1) {
Collections.sort(itemList, new Comparator() {
@Override
public int compare(Item item1, Item item2) {
return Integer.compare(item1.getValue(), item2.getValue());
}
});
}
// 更新ListView的适配器
adapter.notifyDataSetChanged();
}
@Override
public void onNothingSelected(AdapterView adapterView) {
// 未选择任何选项
}
});
}
}
```
CustomListAdapter.java:
```java
public class CustomListAdapter extends ArrayAdapter {
private Context context;
private ArrayList itemList;
public CustomListAdapter(Context context, ArrayList itemList) {
super(context, R.layout.list_item, itemList);
this.context = context;
this.itemList = itemList;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View rowView = inflater.inflate(R.layout.list_item, parent, false);
TextView nameTextView = rowView.findViewById(R.id.nameTextView);
TextView valueTextView = rowView.findViewById(R.id.valueTextView);
Item item = itemList.get(position);
nameTextView.setText(item.getName());
valueTextView.setText(String.valueOf(item.getValue()));
return rowView;
}
}
```
Item.java:
```java
public class Item {
private String name;
private int value;
public Item(String name, int value) {
this.name = name;
this.value = value;
}
public String getName() {
return name;
}
public int getValue() {
return value;
}
}
```
activity_main.xml:
```xml
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="16dp"
android:paddingTop="16dp"
android:paddingRight="16dp"
android:paddingBottom="16dp"
tools:context=".MainActivity">
android:id="@+id/spinner"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="16dp" />
android:id="@+id/listView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯