栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

安卓:Day5 列表视图

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

安卓:Day5 列表视图

一.列表视图的介绍

列表视图是android中最常用的一种视图组件,它以垂直列表的形式列出需要显示的列表项。
在android中有两种方法向屏幕中添加列表视图:
一种是直接使用ListView组件创建;
另外一种是让Activity继承ListActivity实现。

二.华老师的关于列表视图的思维导图

(放在这儿,怕以后找不到)

三.基于数组适配器使用列表视图 四.案例:阅读故事 1.建立ReadAncientPoetry的文件

2.准备好背景图片,放到drawable文件下

3.在布局资源文件下面建立好ListView,将限定布局改为线性布局


4. 注意:ListView中常用的属性 (1).android:divider (2).android:dividerHeight (3).android:entries (4).android:footerDividersEnabled (5).android:headerDividersEnabled (6).ListView主要使用的方法: 5.准备数据源
    List mAddHeaderFooterList = new ArrayList();
6.将数据源添加到适配器中
        ArrayAdapter adapter = new ArrayAdapter(this, 
                               android.R.layout.simple_list_item_1, mAddHeaderFooterList);
7.将适配器中的数据添加到ListView中
        mListView.setAdapter(adapter);
8.添加诗歌列表项模板poem_list_item.xml





9.字符串的资源文件String.xml

                                                                                                             
    阅读古诗                                                                            
                                                                                                                        
                                                                                            
        静夜思                                                                                                
        登鹳雀楼                                                                                               
        相思                                                                                                 
        听弹琴                                                                                                
        登乐游原                                                                                               
        朝发白帝城                                                                                              
        巴山夜雨                                                                                               
        渭城曲                                                                                                
        春夜喜雨                                                                                               
        离离原上草                                                                                              
        示儿                                                                                                 
                                                                                                         
                                                                                                                        
                                                                                           
        唐·李白                                                                                               
        唐·王之涣                                                                                              
        唐·王维                                                                                               
        唐·刘长卿                                                                                              
        唐·李商隐                                                                                              
        唐·李白                                                                                               
        唐·杜牧                                                                                               
        唐·王维                                                                                               
        唐·杜甫                                                                                               
        唐·白居易                                                                                              
        宋·陆游                                                                                               
                                                                                                         
                                                                                                                        
                                                                                          
        床前明月光,n疑是地上霜。n举头望明月,n低头思故乡。                                                                     
        白日依山尽,n黄河入海流。n欲穷千里目,n更上一层楼。                                                                     
        红豆生南国,n春来发几枝。n愿君多采撷,n此物最相思。                                                                     
        泠泠七弦上,n静听松风寒。n古调虽自爱,n今人多不弹。                                                                     
        向晚意不适,n驱车登古原。n夕阳无限好,n只是近黄昏。                                                                     
        朝辞白帝彩云间,n千里江陵一日还。n两岸猿声啼不住,n轻舟已过万重山。                                                             
        君问归期未有期,n巴山夜雨涨秋池。n何当共剪西窗烛,n却话巴山夜雨时。                                                             
        渭城朝雨浥轻尘,n客舍青青柳色新。n劝君更尽一杯酒,n西出阳关无故人。                                                             
        好雨知时节,当春乃发生。n随风潜入夜,润物细无声。n野径云俱黑,江船火独明。n晓看红湿处,花重锦官城。                                             
        离离原上草,一岁一枯荣。n野火烧不尽,春风吹又生。n远芳侵古道,晴翠接荒城。n又送王孙去,萋萋满别情。                                             
        死去元知万事空,n但悲不见九州同。n王师北定中原日,n家祭无忘告乃翁。                                                             
                                                                                                 
                                                                                                            

10.主页面MainActivity.xml (1)声明变量

(2)通过资源标识符获取控件实例

(3)初始化古诗标题数组

(4)创建数组适配器

(5)给列表控件设置适配器

(6)代码提示
package net.yuanjing.readancientpoetry;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class MainActivity extends AppCompatActivity {
    private ListView lvPoemTitle; //显示古诗标题的列表控件 - 展示
    private ArrayAdapter adapter; // 数组适配器 - 桥梁
    private String[] strPoemTitles; // 古诗标题数组 - 数据源

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //利用布局资源文件设置用户界面
        setContentView(R.layout.activity_main);

        // 通过资源标识符获取控件实例
        lvPoemTitle = findViewById(R.id.lvPoemTitle);

        // 初始化古诗标题数组,作为数据源
        String[] titles = getResources().getStringArray(R.array.titles);
        strPoemTitles = new String[titles.length];
        for (int i = 0; i < strPoemTitles.length; i++) {
            strPoemTitles[i] = (i + 1) + ". " + titles[i];
        }

        // 创建数组适配器
        adapter = new ArrayAdapter<>(
                this,// 参数1:上下文环境
                android.R.layout.simple_list_item_1,// 列表项模板
                strPoemTitles // 数据源 - 数组
        );

        // 给列表控件设置适配器
        lvPoemTitle.setAdapter(adapter);
    }
}
(7)运行的效果

11.采用平台提供的列表项模板资源,看一哈效果




注意:一页没有显示完全的古诗标题,可以通过手势滑动看到其余的列表项

12.单击列表项,弹出吐司,显示古诗名及其编号 (1)修改主界面类,给列表控件注册项目单击监听器

(2)参数position是用户单击列表项的位置,从0开始的,比如用户单击了第3个列表项,那么position就等于2,也就是说,position要加1才是行号。 (3)参数id的值与参数position的值相等,两个参数只是类型不同而已。 (4)查看运行的效果

13.创建显示古诗内容的界面 - ContentActivity (1).基于模板创建ContentActivity

(2).内容界面布局资源文件content_activity.xml



    

        

        

        
    

    

            
    


(3).创建String

(4).通过资源标识符获取控件实例

(5).获取窗口跳转的意图,获取意图携带的数据,进行相应的处理

(6).返回目录按钮单击事件处理方法

14.代码提示:
package net.yuanjing.readancientpoetry;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class ContentActivity extends AppCompatActivity {
    private TextView tvTitle;
    private TextView tvAuthor;
    private TextView tvContent;
    private String[] titles;
    private String[] authors;
    private String[] contents;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_content);

        // 通过资源标识符获取控件实例
        tvTitle = findViewById(R.id.tvTitle);
        tvAuthor = findViewById(R.id.tvAuthor);
        tvContent = findViewById(R.id.tvContent);



        //获取窗口跳转的意图
        Intent intent = getIntent();
        //判断意图是否为空
        if (intent != null) {
            //获取意图携带的数据
            int position = intent.getIntExtra("position", 0);
            //获取古诗标题数组
            titles = getResources().getStringArray(R.array.titles);
            //获取古诗作者数组
            authors = getResources().getStringArray(R.array.authors);
            //获取古诗内容数组
            contents = getResources().getStringArray(R.array.contents);
            //设置古诗标题标签文本
            tvTitle.setText(titles[position]);
            //设置古诗作者标签文本
            tvAuthor.setText(authors[position]);
            //设置古诗内容标签文本
            tvContent.setText(contents[position]);
        }
    }

    public void doBack(View view) {
        finish();
    }
}
15.修改主界面类,实现窗口跳转

代码:
package net.yuanjing.readancientpoetry;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {
    private ListView lvPoemTitle; //显示古诗标题的列表控件 - 展示
    private ArrayAdapter adapter; // 数组适配器 - 桥梁
    private String[] strPoemTitles; // 古诗标题数组 - 数据源

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //利用布局资源文件设置用户界面
        setContentView(R.layout.activity_main);

        // 通过资源标识符获取控件实例
        lvPoemTitle = findViewById(R.id.lvPoemTitle);

        // 初始化古诗标题数组,作为数据源
        String[] titles = getResources().getStringArray(R.array.titles);
        strPoemTitles = new String[titles.length];
        for (int i = 0; i < strPoemTitles.length; i++) {
            strPoemTitles[i] = (i + 1) + ". " + titles[i];
        }

        // 创建数组适配器
        adapter = new ArrayAdapter<>(
                this,// 参数1:上下文环境
                R.layout.poem_list_item,// 列表项模板
                strPoemTitles // 数据源 - 数组
        );

        // 给列表控件设置适配器
        lvPoemTitle.setAdapter(adapter);

        //给列表控件注册项目单机监听器
        lvPoemTitle.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView adapterView, View view, int position, long id) {
                Toast.makeText(MainActivity.this,"你选择了第" + (position + 1)
                + "首古诗【" + titles[position] + "】",Toast.LENGTH_LONG).show();
                //创建窗口跳转的意图
                Intent intent = new Intent(MainActivity.this,ContentActivity.class);
                //通过意图携带数据
                intent.putExtra("position",position);
                //按照意图启动目标组件
                startActivity(intent);
            }
        });
    }
}
16.效果展示:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/981598.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号