首页 > 其他分享 >2023年3月21日(软件工程日报)

2023年3月21日(软件工程日报)

时间:2023-03-21 21:00:13浏览次数:36  
标签:21 适配器 视图 列表 planet 软件工程 2023 import holder

今天主要内容,完成地铁app主页面及其跳转页面设计,具体情况在第一次结对作业中,

之后学习

数组适配器适用于纯文本的列表数据,简单适配器适用于带图标的列表数据。然 而实际应用常常有更复杂的列表,比如每个列表项存在3个以上的控件,这种情况即便是简单适配器也很 吃力,而且不易扩展。为此Android提供了一种适应性更强的基本适配器BaseAdapter,该适配器允许 开发者在别的代码文件中编写操作代码,大大提高了代码的可读性和可维护性。 从BaseAdapter派生的数据适配器主要实现下面5种方法。构造方法:指定适配器需要处理的数据集合。 getCount:获取列表项的个数。 getItem:获取列表项的数据。 getItemId:获取列表项的编号。 getView:获取每项的展示视图,并对每项的内部控件进行业务处理。 下面以下拉框控件为载体,演示如何操作BaseAdapter,具体的编码过程分为3步: 步骤一,编写列表项的布局文件 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <!-- 这是显示行星图片的图像视图 --> <ImageView android:id="@+id/iv_icon" android:layout_width="0dp" android:layout_height="80dp" android:layout_weight="1" android:scaleType="fitCenter" /> <LinearLayout android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="3" android:layout_marginLeft="5dp" android:orientation="vertical"> <!-- 这是显示行星名称的文本视图 --> <TextView android:id="@+id/tv_name" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:gravity="left|center" android:textColor="@color/black" android:textSize="20sp" /> <!-- 这是显示行星描述的文本视图 --> <TextView android:id="@+id/tv_desc" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="2" android:gravity="left|center" android:textColor="@color/black" android:textSize="13sp" /> </LinearLayout> </LinearLayout> 步骤二,写个新的适配器继承BaseAdapter (package com.example.chapter08.adapter; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView; import com.example.chapter08.R; import com.example.chapter08.bean.Planet; import java.util.List; public class PlanetBaseAdapter extends BaseAdapter { private Context mContext; // 声明一个上下文对象 private List<Planet> mPlanetList; // 声明一个行星信息列表 // 行星适配器的构造方法,传入上下文与行星列表 public PlanetBaseAdapter(Context context, List<Planet> planet_list) { mContext = context; mPlanetList = planet_list; } // 获取列表项的个数 public int getCount() { return mPlanetList.size(); } // 获取列表项的数据 public Object getItem(int arg0) { return mPlanetList.get(arg0); } // 获取列表项的编号 public long getItemId(int arg0) { return arg0; } // 获取指定位置的列表项视图 public View getView(final int position, View convertView, ViewGroup parent) { ViewHolder holder; if (convertView == null) { // 转换视图为空 holder = new ViewHolder(); // 创建一个新的视图持有者 // 根据布局文件item_list.xml生成转换视图对象 convertView = LayoutInflater.from(mContext).inflate(R.layout.item_list, null); holder.iv_icon = convertView.findViewById(R.id.iv_icon); holder.tv_name = convertView.findViewById(R.id.tv_name); holder.tv_desc = convertView.findViewById(R.id.tv_desc); convertView.setTag(holder); // 将视图持有者保存到转换视图当中 } else { // 转换视图非空 // 从转换视图中获取之前保存的视图持有者 holder = (ViewHolder) convertView.getTag(); }Planet planet = mPlanetList.get(position); holder.iv_icon.setImageResource(planet.image); // 显示行星的图片 holder.tv_name.setText(planet.name); // 显示行星的名称 holder.tv_desc.setText(planet.desc); // 显示行星的描述 holder.iv_icon.requestFocus(); return convertView; } // 定义一个视图持有者,以便重用列表项的视图资源 public final class ViewHolder { public ImageView iv_icon; // 声明行星图片的图像视图对象 public TextView tv_name; // 声明行星名称的文本视图对象 public TextView tv_desc; // 声明行星描述的文本视图对象 } } 步骤三,在页面代码中创建该适配器实例 // 初始化行星列表的下拉框 private void initPlanetSpinner() { // 获取默认的行星列表,即水星、金星、地球、火星、木星、土星 planetList = Planet.getDefaultList(); // 构建一个行星列表的适配器 PlanetBaseAdapter adapter = new PlanetBaseAdapter(this, planetList); // 从布局文件中获取名叫sp_planet的下拉框 Spinner sp_planet = findViewById(R.id.sp_planet); sp_planet.setPrompt("请选择行星"); // 设置下拉框的标题 sp_planet.setAdapter(adapter); // 设置下拉框的列表适配器 sp_planet.setSelection(0); // 设置下拉框默认显示第一项 // 给下拉框设置选择监听器,一旦用户选中某一项,就触发监听器的onItemSelected方法 sp_planet.setOnItemSelectedListener(new MySelectedListener()); }

标签:21,适配器,视图,列表,planet,软件工程,2023,import,holder
From: https://www.cnblogs.com/ewqewq/p/17241411.html

相关文章

  • wolvctf 2023 zombie xss
    当时做的时候没想到这道题考的是XSS,归结原因在于对nodejs的代码不熟悉。先上源码:bot.js源码就不放了,主要功能概括一下就是点击用户提交的链接,把flag放到cookie里传过去,很......
  • 每日总结-23.3.21
    关于Androidstudio操作SQLite的方法packagecom.example.daka1;importandroid.content.ContentValues;importandroid.content.Context;importandroid.database.C......
  • 3.21每日总结
    packagecom;importjava.sql.*;publicclassDB{publicConnectionconn=null;publicStatementstmt=null;publicResultSetrs=null;S......
  • 3.21总结
    一、新建Newproject空项目存放地址CodeFile一个moduleJavasrc创建包package——com.zihan.hello包内创建类class二、注释 1.//注释单行;/**/注释多行;/***/......
  • COMP3221 Routing Algorithm
    Due:March31st,2023(Friday,Week6)by11:59PMCOMP3221Assignment1:RoutingAlgorithmThegoalofthisassignmentistoimplementroutingprotocolsforane......
  • 闲话 23.3.21
    闲话【碎片】0.8/1明天集训就结束了(同学们吃外卖吃够了吗(模拟赛T1会维护静态区间子区间mex和吧?不会?会维护静态区间mex吧?套个历史版本和就没了。mex是最小,mix......
  • 2023年3月21日
    计划写中期报告,写完最好看业务功能的实现执行09点32分 填写了考勤记录搞清楚接口调试是怎么回事,怎么弄的,然后写需求分析,画用例图,管理员登陆不上,不知道密码......
  • CVPR 2023 | GPT-4与文心一言同台竞技,居然是为了自动驾驶UniAD工作!
    以下文章来源于OpenDriveLab ,作者OpenDriveLa00  前言都说ChatGPT是自然语言处理中技术大魔王,国内百度的文心一言是国内技术一霸,那自动驾驶中的技术魔王,你听过说吗?另外......
  • 《渗透测试》Web应用&源码泄漏&开源闭源&指纹识别&GIT&SVN&DS&备份 2023 Day13
       #后端-开源-指纹识别-源码下载CMS识别见上述项目 #后端-闭源-配置不当-源码泄漏参考:https://www.secpulse.com/archives/124398.html备份:敏感目录文件扫......
  • 20230321
    Shell运算符表达式和运算符之间要有空格,例如2+2是不对的,必须写成2+2,这与我们熟悉的大多数编程语言不一样。完整的表达式要被``包含算术运算符与C语言的没有区别......