ListView学习笔记之一

本文详细介绍了Android中ListView的使用方法,包括ArrayAdapter和SimpleCursorAdapter两种适配器的具体实现方式。展示了如何通过ArrayAdapter展示简单数据列表,并通过SimpleCursorAdapter从数据库获取数据并显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

listview的显示需要三个元素:


1.ListVeiw 用来展示列表的View。

2.适配器 用来把数据映射到ListView上的中介。

3.数据    具体的将被映射的字符串,图片,或者基本组件。

根据列表的适配器类型,列表分为三种,ArrayAdapter,SimpleAdapter和SimpleCursorAdapter

一\ ArrayAdapter

java.lang.Object
   ↳ android.widget.BaseAdapter
    ↳ android.widget.ArrayAdapter<T>
extends BaseAdapter
implements Filterable

类简介
默认的的ResourceID为TextView,若要用其他视图组建,重写getView(int, View, ViewGroup),返回所需要的视图

举例
public ArrayAdapter(Context context, int textViewResourceId, List<T> objects)
Parameters
context The current context.
textViewResourceId The resource ID for a layout file containing a TextView to use when instantiating views.
objects The objects to represent in the ListView.

public class MyListView extends Activity {
 
    private ListView listView;
    @Override
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
         
        listView = new ListView(this);       
        //android.R.layout.simple_list_item_1是系统定义好的布局文件只显示一行文字
        listView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1,getData()));
        setContentView(listView);
    }

    private List<String> getData(){
         
        List<String> data = new ArrayList<String>();
        data.add("测试数据1");
        data.add("测试数据2");
        data.add("测试数据3");
        data.add("测试数据4");         
        return data;
    }
}


二、CursorAdapter
通过游标获得数据后,在listview中显示结果。
Cursor cursor = getContentResolver().query(People.CONTENT_URI, null, null, null, null);先获得一个指向系统通讯录数据库的Cursor对象获得数据来源。
 startManagingCursor(cursor);我们将获得的Cursor对象交由Activity管理,这样Cursor的生命周期和Activity便能够自动同步。
 SimpleCursorAdapter 构造函数前面3个参数和ArrayAdapter是一样的,最后两个参数:一个包含数据库的列的String型数组,一个包含布局文件中对应组件id的int型数组。其作用是自动的将String型数组所表示的每一列数据映射到布局文件对应id的组件上。下面的代码,将NAME列的数据一次映射到布局文件的id为text1的组件上。


注意:需要在AndroidManifest.xml中如权限:<uses-permission android:name="android.permission.READ_CONTACTS"></uses-permission>

SimpleCursorAdapter
extends ResourceCursorAdapter
java.lang.Object
   ↳ android.widget.BaseAdapter
    ↳ android.widget.CursorAdapter
    ↳android.widget.ResourceCursorAdapter
    ↳android.widget.SimpleCursorAdapter

函数简介
public SimpleCursorAdapter (Context context, int layout, Cursor c, String[] from, int[] to)
Parameters
context    The context where the ListView associated with this SimpleListItemFactory is running
layout    resource identifier of a layout file that defines the views for this list item. The layout file should include at least those named views defined in "to"
c The database cursor. Can be null if the cursor is not available yet.
from A list of column names representing the data to bind to the UI. Can be null if the cursor is not available yet.
to The views that should display column in the "from" parameter. These should all be TextViews. The first N views in this list are given the values of the first N columns in the from parameter. Can be null if the cursor is not available yet.

举例

public class MainActivity extends Activity {
 
    private ListView listView;
@Override
    public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
listView = new ListView(this);

Cursor cursor = getContentResolver().query(People.CONTENT_URI, null, null, null, null);
startManagingCursor(cursor);

ListAdapter listAdapter = new SimpleCursorAdapter(this,  android.R.layout.simple_expandable_list_item_1, cursor,
new String[] { People.NAME }, new int[] { android.R.id.text1 });
listView.setAdapter(listAdapter);
setContentView(listView);
    }
*CursorAdapter 常与数据库查询配合使用,获得的数据结果显示在listview中。

如果将simplecursoradapter改成这样:

ListAdapter listAdapter = new SimpleCursorAdapter(this,
android.R.layout.simple_expandable_list_item_2, cursor,
new String[] { People.NAME, People.NAME }, new int[] { android.R.id.text1,android.R.id.text2 });

则会显示android.R.layout.simple_expandable_list_item_2对应格式的list。



整理来自: http://blog.youkuaiyun.com/x359981514/article/details/8120731

python+opencv简谱识别音频生成系统源码含GUI界面+详细运行教程+数据 一、项目简介 提取简谱中的音乐信息,依据识别到的信息生成midi文件。 Extract music information from musical scores and generate a midi file according to it. 二、项目运行环境 python=3.11.1 第三方库依赖 opencv-python=4.7.0.68 numpy=1.24.1 可以使用命令 pip install -r requirements.txt 来安装所需的第三方库。 三、项目运行步骤 3.1 命令行运行 运行main.py。 输入简谱路径:支持图片或文件夹,相对路径或绝对路径都可以。 输入简谱主音:它通常在第一页的左上角“1=”之后。 输入简谱速度:即每分钟拍数,同在左上角。 选择是否输出程序中间提示信息:请输入Y或N(不区分大小写,下同)。 选择匹配精度:请输入L或M或H,对应低/中/高精度,一般而言输入L即可。 选择使用的线程数:一般与CPU核数相同即可。虽然python的线程不是真正的多线程,但仍能起到加速作用。 估算字符上下间距:这与简谱中符号的密集程度有关,一般来说纵向符号越稀疏,这个值需要设置得越大,范围通常在1.0-2.5。 二值化算法:使用全局阈值则跳过该选项即可,或者也可输入OTSU、采用大津二值化算法。 设置全局阈值:如果上面选择全局阈值则需要手动设置全局阈值,对于.\test.txt中所提样例,使用全局阈值并在后面设置为160即可。 手动调整中间结果:若输入Y/y,则在识别简谱后会暂停代码,并生成一份txt文件,在其中展示识别结果,此时用户可以通过修改这份txt文件来更正识别结果。 如果选择文件夹的话,还可以选择所选文件夹中不需要识别的文件以排除干扰
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值