创新实训项目分析——第二篇

2021SC@SDUSC



前言

前言
本篇开始分析飞花令项目的源码。飞花令的项目要求实现两个主要功能,一个是查询所有包含输入关键字的诗句,一个是人机模拟飞花令游戏。
本篇将继续分析分析查询功能的代码。

一、项目环境

android studio 4.1.2

Compile SDK version:30

Build Tools Version 30.0.3

gradle 6.8.3

二、代码分析

1.MainActivity.java文件

public class MainActivity extends AppCompatActivity {
     @Override
    protected void onCreate(@Nullable Bundle savedInstanceState
    //@Nullable 表示定义的字段可以为空) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        }
      }

onCreate方法主要是初次启动(指使用这个类)首先加载的方法。
重写onCreate方法时要记得调用super.onCreate(savedInstanceState),作用是加载一些组件,调用其父类Activity的onCreate方法来实现对界面的图画绘制工作。

setContentView(R.layout.activity_main);
利用setContentView方法定位到activity_main这个布局文件,MainActivity.java和activity_main.xml有了联系,
方法名setContentView的意思看的出来,启动内容视图“用”布局文件activity_main.xml。

2.页面跳转

如果点击飞花令,那么会进行页面跳转,而在这里页面跳转利用的是intent类来执行。
如果Intent对象中包含了目标的class文件,那么就是显示意图的跳转;如果Intent没有包含目标的class文件,就是隐式意图跳转,隐式意图跳转就涉及到比较多的Intent对象的属性值的比较。

 start.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                EditText key= findViewById(R.id.id_key);
                Intent intent = new Intent(MainActivity.this,MainActivity2.class);
                System.out.println(key.getText().toString());
                Bundle bundle = new Bundle();
                bundle.putString("data",key.getText().toString());
                intent.putExtras(bundle);
                startActivity(intent);
            }
        });

Bundle类用作携带数据,它类似于Map,用于存放key-value名值对形式的值,两个activity之间的通讯可以通过bundle类来实现。
intent.putExtras()可以用来传递参数
方法1:
设置方法 intent.putExtra(“aaa”, “bbbb”);
获取方法 this.getIntent().getCharSequenceExtra(“aaa”)
方法2:
设置方法:
Bundle bd = new Bundle();
bd.putString(“aaa”,“bbbb”);
intent.putExtras(bd);
获取方法
Bundle bd=this.getIntent().getExtras();
bd.getString(“aaa”));

这一部分的代码即是如果再MainActivity所对应的页面点击飞花令的按钮,即button1,会发生页面跳转,跳转到飞花令的页面,同时会传递关键字参数,方便进行飞花令游戏。

3.查询返回

    public void onClick_go(View view){
     //这里文件夹的名称必须是raw,否则无法找到,这里是读入文件的语句;
     //数据集在raw里
    InputStream input = getResources().openRawResource(R.raw.sumtry);
    //对文件内容进行读取
    try{
        //把文件内容传给scanner
        Scanner scanner=new Scanner(input);
        int sum=1;
        String line,ans = "";
        String title="";

       out:
        while (scanner.hasNext()){
            //一次读取一行
            line=scanner.nextLine();
            for (int i = 0; i < line.length(); i++)
            {
                if(line.charAt(i)==':') {//表示这里面含有作者和诗名
                    title = line; //title存储作者和诗名
                    continue out;
                }

            }
            if(line.contains(key.getText().toString())){//含有带关键词的并且不是作者名和诗名
                ans =line +"\n-------"+title.replaceAll("\\d+","")+ "\n";//诗句+作者名:诗名,title中正好存的是这首诗的作者名和诗名
                //运用了正则表达式,是把数字字符都去掉
                sum++;
                poems.add(ans);
            }

        }
     if(poems.isEmpty()) poems.add("空");
      // 然后是个⼩判断,如果poems为空,也就意味着没有符合条件的
      //诗句当poems不为空时,展示查询结果
        MyAdapter myAdapter=new MyAdapter(MainActivity.this,R.layout.words_item,poems);
        res.setAdapter(myAdapter);

        scanner.close();

    }catch (Exception e){
        e.printStackTrace();
    }

这部分我的理解就是,根据关键字,将原本就有的诗句库从头到尾扫一遍,扫到诗句包含有关键字的诗句,该诗句+作者名+诗名一起存储在String类型中,添加到Arraylist容器poems里,将poems作为数据源,加上上下文环境,页面布局,使用适配器,串联起来,并且将适配器与ListView通过setAdapter联系起来。

res.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
//显示
String str=poems.get(position);
Toast.makeText(MainActivity.this,str,Toast.LENGTH_LONG).show();;
}
});
Toast是为了提醒用户,而又不影响用户的操作的提示栏。当你点击listview中某一句诗的时候,就会出现一个这样的提示框在这里插入图片描述

总结

上下两篇研究完了查询功能是如何完成的,主要是应用了adapter+listview,除此之外也明白了完成一个app页面需要布局文件+activity文件,往往利用adapter的初始化来规定listview中的展示样式。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【微信小程序-毕设期末大作业】微信小程序源码 【微信小程序-毕设期末大作业】微信小程序源码 【微信小程序-毕设期末大作业】微信小程序源码 【微信小程序-毕设期末大作业】微信小程序源码 【微信小程序-毕设期末大作业】微信小程序源码 【微信小程序-毕设期末大作业】微信小程序源码 【微信小程序-毕设期末大作业】微信小程序源码 【微信小程序-毕设期末大作业】微信小程序源码 【微信小程序-毕设期末大作业】微信小程序源码 【微信小程序-毕设期末大作业】微信小程序源码 【微信小程序-毕设期末大作业】微信小程序源码 【微信小程序-毕设期末大作业】微信小程序源码 【微信小程序-毕设期末大作业】微信小程序源码 【微信小程序-毕设期末大作业】微信小程序源码 【微信小程序-毕设期末大作业】微信小程序源码 【微信小程序-毕设期末大作业】微信小程序源码 【微信小程序-毕设期末大作业】微信小程序源码 【微信小程序-毕设期末大作业】微信小程序源码 【微信小程序-毕设期末大作业】微信小程序源码 【微信小程序-毕设期末大作业】微信小程序源码 【微信小程序-毕设期末大作业】微信小程序源码 【微信小程序-毕设期末大作业】微信小程序源码 【微信小程序-毕设期末大作业】微信小程序源码 【微信小程序-毕设期末大作业】微信小程序源码 【微信小程序-毕设期末大作业】微信小程序源码 【微信小程序-毕设期末大作业】微信小程序源码 【微信小程序-毕设期末大作业】微信小程序源码 【微信小程序-毕设期末大作业】微信小程序源码 【微信小程序-毕设期末大作业】微信小程序源码 【微信小程序-毕设期末大作业】微信小程序源码 【微信小程序-毕设期末大作业】微信小程序源码 【微信小程序-毕设期末大作业】微信小程序源码 【微信小程序-毕设期末大作业】微信小程序源码 【微信小程序-毕设期末大作业】微信小程序源码

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值