写了一个简单的示例来说明ListView的用法:给定一个单词,下面有四个含义,找出正确的一个,无论是否成功,则会跳转到下一个单词;
主要用到的知识有: findViewById()、  ListView、    AdapterView、 匿名内部类、 ArrayList的一些用法:

下面主要看代码,代码里面注释的很详细,就不再过多赘述:
xml:

 <?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"> <TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/wordTextView"
android:text="word"
android:textSize="26dp"
android:layout_gravity="center"/>
<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/definitions_ListView"> </ListView> </LinearLayout>

java文件:

setOnItemClickListener这是ListView的监听方法;
 package com.chenye.dictionarychange;

 import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast; import org.w3c.dom.Text; import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.Scanner; public class MainActivity extends AppCompatActivity { private HashMap<String, String> dictionary; // 存放单词-单词含义的字典
private ArrayList<String> chosenWords; // 将所有单词存放到chosenwords
private String word; //单词
private ArrayList<String> definations; // 含义列表
private ArrayAdapter<String> adapter; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
readAllDefination();
this.chosenWords = new ArrayList<>(this.dictionary.keySet()); // 获取到所有单词并存在在ArrayList中
this.definations = new ArrayList<>();
this.adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, this.definations); // 初始化ArrayAdapter
// 随机选择5个单词含义
pick4Definations();
// 将列表添加到adapter中
ListView defnListView = findViewById(R.id.definitions_ListView);
defnListView.setAdapter(this.adapter);
// 监听这个列表, 用到了匿名内部类
defnListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
ListView defnListView = findViewById(R.id.definitions_ListView);
String chooseDefnText = defnListView.getItemAtPosition(i).toString(); // 获取点击位置的字符串, i是list的位置, 大部分情况下i和l(list的第几行)是一样的
String correctDefn = MainActivity.this.dictionary.get(word); // 获取对应单词的解释
// 如果选择和正确结果一致,则:
if(correctDefn.equals(chooseDefnText)){
Toast.makeText(MainActivity.this, "Correct", Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(MainActivity.this, "Wrong", Toast.LENGTH_SHORT).show();
}
// 选择之后在重新刷新一次列表,即再次挑选一个单词和5个单词的含义
pick4Definations(); }
});
}
public void pick4Definations(){ Collections.shuffle(this.chosenWords); // 打乱单词的存放位置
this.word = this.chosenWords.get(0); // 获取存放单词的list中的第一个单词
TextView wordText = findViewById(R.id.wordTextView);
wordText.setText(this.word); // 显示单词
this.definations.clear(); // 防止结果有脏数据,清空一下单词含义的list
for(int i = 0; i < 4; i++){
String defn = this.dictionary.get(this.chosenWords.get(i)); // 获取到单词对应的意思
this.definations.add(defn);
}
Collections.shuffle(this.definations); // 打乱结果
this.adapter.notifyDataSetChanged(); // 通知adpter改变
}
// 将所有单词及其含义放在dictionary这个字典中
private void readAllDefination(){
Scanner scanner = new Scanner(getResources().openRawResource(R.raw.gre_words));
if(this.dictionary == null){
this.dictionary = new HashMap<>();
}
while (scanner.hasNext()){
String line = scanner.nextLine();
String[] spiece = line.split("\t");
this.dictionary.put(spiece[0], spiece[1]);
}
}
}

Android ListView用法的更多相关文章

  1. android ListView用法介绍

    ListView在Android开发中是比较常用的组件,它是以列表的形式展示内容,并且还可以处理用户的选择与点击等操作: LIstView显示数据一般需要三方面: (1)ListView组件:用来展示 ...

  2. xamarin android listview的用法

    listview也许是用的非常频繁的一个控件之一,下面我写一个xamarin的listview栗子,大家尝一尝xamarin android开发的乐趣.原谅我的大小写吧. listview绑定自定义的 ...

  3. Android listview与adapter用法(BaseAdapter + getView)

    Android listview与adapter用法http://www.cnblogs.com/zhengbeibei/archive/2013/05/14/3078805.html package ...

  4. Android ListView OnItemLongClick和OnItemClick事件内部细节分享以及几个比较特别的属性

    本文转自 http://blog.sina.com.cn/s/blog_783ede030101bnm4.html 作者kiven 辞职3,4个月在家休息,本以为楼主要程序员逆袭,结果失败告终继续码农 ...

  5. [置顶] android ListView包含Checkbox滑动时状态改变

    题外话: 在xamarin android的开发中基本上所有人都会遇到这个小小的坎,的确有点麻烦,当时我也折腾了好一半天,如果你能看到这篇博客,说明你和我当初也是一样的焦灼,如果你想解决掉这个小小的坎 ...

  6. Android ListView工作原理完全解析,带你从源码的角度彻底理解

    版权声明:本文出自郭霖的博客,转载必须注明出处.   目录(?)[+] Adapter的作用 RecycleBin机制 第一次Layout 第二次Layout 滑动加载更多数据   转载请注明出处:h ...

  7. android ListView 九大重要属性详细分析、

    android ListView 九大重要属性详细分析. 1.android ListView 一些重要属性详解,兄弟朋友可以参考一下. 首先是stackFromBottom属性,这只该属性之后你做好 ...

  8. Android ListView onItemClick Not Work

    Android ListView onItemClick Not Work ListView item中有Button和RadioButton的时候,它的Item点击事件不起作用,需要设置item的属 ...

  9. Android Meun 用法

    Android Meun 用法 点击菜单实体键弹出菜单:如下图 main_activity.xml <?xml version="1.0" encoding="ut ...

随机推荐

  1. python 学习实例(cmdMD链接)

    实例1:大学网络排名爬取 https://www.zybuluo.com/myles/note/714347

  2. 性能调优--大事务与Alwayson 之间的关系

    最近性能调优的事比较多,所以摘一些比较有特点的 案例分享下. 业务系统用的是sql server 2016 ,搭建的ALWAYSON 两节点的 群集,今天早上突然辅助 副本的只读库出现大量的等待导致系 ...

  3. 两数相除赋值整数变量(T-SQL)

    MSSQL: DECLARE @_pagecount INT; ; SELECT @_pagecount; 结果为1 Mysql: BEGIN DECLARE _pagecount INT; ; SE ...

  4. Java分代的思考

    我们都知道,java的gc是基于java的分代前提,不管是CMS还是G1,都是基于分代思想:老年代和新生代 思考一:为什么可以分代? 1.java中对象的生命周期是不一样的,在gc中对应年龄的概念. ...

  5. JAVA设计模式初探之适配器模式(转)

    1. 概述 将一个类的接口转换成客户希望的另外一个接口.Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作. 2. 解决的问题 即Adapter模式使得原本由于接口不兼容而不 ...

  6. Ubuntu中文乱码问题

    版本 Ubuntu 14.1 系统安装完成后,中文都显示成了乱码 终端或者命令行里输入 sudo apt-get install zhcon 等安装完即可~ 运行的时候记得要加载vgz驱动和utf8支 ...

  7. Bootstrap 历练实例-轮播(carousel)插件的事件

    事件 下表列出了轮播(Carousel)插件中要用到的事件.这些事件可在函数中当钩子使用. 事件 描述 实例 slide.bs.carousel 当调用 slide 实例方法时立即触发该事件. $(' ...

  8. 【算法】Fibonacci(斐波那契数列)相关问题

    一.列出Fibonacci数列的前N个数 using System; using System.Collections.Generic; using System.Linq; using System ...

  9. 【Python学习之七】面向对象高级编程——使用@property

    参考来自廖雪峰Python教程:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/ ...

  10. Iframe父子间元素操作

    1.在父页面 获取iframe子页面的元素 (在同域的情况下 且在http://下测试,且最好在iframe onload加载完毕后 dosomething...) js写法 a.通过contentW ...