在Android中的ListView选单组件,是以下列表方式来列出选项,供用户选择。

ListView组件属性设置:

  创建spinner组件时,只需要设置一项entries属性即可使用。此属性是设置要放在列表中的文字内容,不可以像text View的text属性那样直接指定字符串,是必须先在value/string.xml中创建字符串数组,再将数组名指定给entri属性,当程序执行时就会列出数组内容。举个简单的例子:

string.xml数组如下

 <string-array name="habit">
<item>晨跑</item>
<item>健身</item>
<item>爬山</item>
<item>游泳</item>
<item>篮球</item>
<item>足球</item>
</string-array>

布局文件代码如下:

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.hs.example.exampleapplication.ListViewActivity"> <TextView
android:id="@+id/select"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:textSize="25sp"
android:text="请选择你喜欢的运动!"/> <ListView
android:id="@+id/lv_sele"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:entries="@array/habit"> </ListView> </LinearLayout>

逻辑处理代码如下:

 public class ListViewActivity extends AppCompatActivity implements AdapterView.OnItemClickListener{

     ListView listV ;
ArrayList<String> selected = new ArrayList<>(); @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_listview); listV = this.findViewById(R.id.lv_sele);
listV.setOnItemClickListener(this);
} @Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
TextView textView = (TextView) view; //被点击的view对象转换成textView对象
String item = textView.getText().toString();//获取选中的文字
if(selected.contains(item)){ //如果集合中已经有该选项,再次点击则删除
selected.remove(item);
}else{ //否则就添加进去
selected.add(item);
}
String msg ;
if(selected.size()>){
msg = "你喜欢的运动有:";
for(String str : selected){ //遍历数组中的选项,转换成字符串添加到msg中
msg += str.toString() + " | ";
}
}else{
msg = "请选择你喜欢的运动!";
}
TextView msgText = this.findViewById(R.id.select);
msgText.setText(msg);
}
}

运行效果如下图:

最新文章

  1. MFC AfxMessageBox默认标题修改
  2. JAVA面试逻辑题1
  3. SVN集中式版本控制器的安装、使用与常见问题汇总
  4. adapter.notifyDataSetChanged(); 没有反应
  5. .NET4.0 __doPostBack未定义
  6. 笨方法学python--安装和准备
  7. 程序设计中的数学思维函数总结(代码以C#为例)
  8. 关于SCSI/SATA/IDE硬盘的比较
  9. 201521123007《Java程序设计》第5周学习总结
  10. Working with Python subprocess - Shells, Processes, Streams, Pipes, Redirects
  11. vue打包后不使用服务器直接访问方法
  12. 对于多线程下Servlet以及Session的一些理解
  13. Android必知必会-Android Studio修改包名
  14. C#UDP广域网,局域网通信-原理分析
  15. Linux启动流程和脚本服务-6
  16. Python基础理论 - 常用模块
  17. Rsync + Sersync 实现数据增量同步
  18. django中的时区设置TIME_ZONE,USE_TZ
  19. webElement.text()获取到内容为空
  20. Nginx 为 Golang 配置 web 服务

热门文章

  1. ZJOI2019赛季回顾
  2. c# 关于反射
  3. rpm 子包创建学习
  4. 浅谈C/C++回调函数(Callback)&amp; 函数指针
  5. python基础_格式化输出(%用法和format用法)(转载)
  6. Linux终端图形库编程
  7. 虚方法(virtual)\抽象方法(abstract)\接口(interface)的区别
  8. 解析node-cors模块
  9. Java 并发系列之二:java 并发机制的底层实现原理
  10. [Gamma阶段]测试报告