androidlistview的用法(androidinflate详解)

犹豫了几天,觉得还是把这个教程写一下吧。虽然在网上已经一大堆了,但是这是我学习的历程我觉得我还是该记录下来,以后也可以温故而知新。 ListView在Android众多控件中占有比较重要的地位,也是面试官热爱提问的控件之一,特别是关于它的性能优化。这一块我想着把它留到最后再说,我们先来谈谈ListView的简单应用,毕竟什么东西都是由浅入深的嘛。 首先我们要先创建一个项目,打开Androidstu…

迟疑了几日,感觉或是把这个实例教程写一下吧。尽管在网络上已经一大堆了,可是这是我学习培训的过程我认为我还是该记下来,之后还可以学而不思则罔。

ListView在Android诸多控件中具有非常主要的影响力,也是招聘者喜爱提出问题的控件之一,尤其是对于它的性能优化。这一块我觉得把它留在最终再讲,大家先来谈一谈ListView的简易运用,终究什么全是循序渐进的嘛。

最先我们要先建立一个新项目,开启Android studio点一下File—New—New Project建立一个名叫ListViewTest的新项目。然后寻找res—layout文件夹名称下的activity_main.xml,开启它而且在里面加上ListView控件如下所示:

    <ListView        
android:id=\"@ id/listview\"   
android:layout_width=\"match_parent\"     
android:layout_height=\"match_parent\"> 
  </ListView>

这时你假如运作新项目你就会发现里边啥都没有,和一开始建立的这一新项目时没多少差别,由于大家都还没往里加上数据信息而且在View中完成它。因此大家返回MainActivity这一类里边根据findViewById()这一方式寻找这一控件而且完成。大家先理解一个名叫data的一维字符串数组,用于储放人们的假数据信息。随后根据新创建一个ArrayAdapter并按照规定配备它,再Adapte通过setAdapter给ListView,编码如下所示:

  private String data[] = {\"aa\",\"bb\",\"cc\",\"dd\",\"aa\",\"bb\",\"cc\",\"dd\",\"aa\",\"bb\",\"cc\",\"dd\",\"aa\",\"bb\",\"cc\",\"dd\"};//假数据信息  
@Override    
protected void onCreate(Bundle savedInstanceState) {        
  super.onCreate(savedInstanceState);     
  setContentView(R.layout.activity_main); 
  ListView listView = (ListView) findViewById(R.id.listview);//在图形中寻找ListView    
  ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,data);//新创建并配备ArrayAapeter     
  listView.setAdapter(adapter); 
}

点一下运作新项目你也就能见到一个简便的ListView:

ListView的简单应用(一)

如今看到了页面了可是离让我们的预期或是有点儿差别,大家期待的是除开可以看还能点一下回应一些事情,因而大家再替它加上一个监视点一下的方式。编码如下所示:

    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {      
                                    @Override      
                                    public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {       
      switch (i){              
        case 0:               
          Toast.makeText(MainActivity.this,\"你点一下了\" i \"按键\",Toast.LENGTH_SHORT).show();        
          break;//在我们点一下某一项就能土司面包大家点了哪一项           
        case 1:                 
          Toast.makeText(MainActivity.this,\"你点一下了\" i \"按键\",Toast.LENGTH_SHORT).show();       
          break;                
        case 2:             
          Toast.makeText(MainActivity.this,\"你点一下了\" i \"按键\",Toast.LENGTH_SHORT).show();    
          break;                
        case 3:                  
          Toast.makeText(MainActivity.this,\"你点一下了\" i \"按键\",Toast.LENGTH_SHORT).show();   
          break;                 
        case 4:               
          Toast.makeText(MainActivity.this,\"你点一下了\" i \"按键\",Toast.LENGTH_SHORT).show();       
          break;           
      }          
    }     
});

这儿我便给了5项Item进行了回应,自然也能让每一项都是有相应的,有兴趣爱好自身可以去试着。那样一个十分简单的ListView就完成了,下面让我们来深层次一点点。

如今我们要订制一个有照片有文本有选择框的ListView,怎么做呢?第一个大家一定要把数据信息改一下,可是大家毫无疑问不太可能说把二维数组data改为二维数据信息就可以的,由于照片并不是字符串数组的方式啊。那要包括字符串数组又能包括照片的数据类型有哪些呢?这时Bean类就产生了,我们可以把那些数据信息封装形式到一个Bean类里边啊,在我们必须的过程中就立即拿出来就行。说做就做随后大家界定一个myBean类,编码如下所示:

public class myBean {   
  private String text;//用于放文本的 
  private int ImageID;//用于放照片的   
  public myBean(String text,int imageID){    
    this.ImageID = imageID;     
    this.text = text;  
  }     
  public String getText() {     
    return text;   
  }  
  public void setText(String text) {    
    this.text = text;  
  }    
  public int getImageID() {    
    return ImageID;   
  }    
  public void setImageID(int imageID) {  
    ImageID = imageID;
  }  }

随后大家就可以根据复位持续的New一个一个的数据信息了,可是大家如何放入ListView里边呢?由于大家刚刚用的是操作系统的ArrayAdapter来兼容到ListView的,大家乃至连要兼容的XML的页面都没。那咱们先去做一个我们要兼容的页面去看看,因此:

<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"   
android:orientation=\"vertical\"
android:layout_width=\"match_parent\" 
android:layout_height=\"match_parent\">    
  <LinearLayout        
android:id=\"@ id/ll_view\"    
android:gravity=\"center\"      
android:layout_margin=\"10dp\"   
android:orientation=\"horizontal\"      
android:layout_width=\"match_parent\"    
android:layout_height=\"wrap_content\">  
  <ImageView       
android:background=\"@mipmap/ic_launcher\"     
android:id=\"@ id/headimage\"     
android:layout_width=\"wrap_content\"     
android:layout_height=\"wrap_content\" />
  <TextView     
android:layout_marginLeft=\"20dp\"
android:layout_weight=\"1\"    
android:text=\"你是SB\"   
android:id=\"@ id/headtext\"  
android:layout_width=\"0dp\"     
android:layout_height=\"wrap_content\" />   
  <RadioGroup       
android:id=\"@ id/radioBtn\"    
android:orientation=\"horizontal\"
android:layout_width=\"wrap_content\"    
android:layout_height=\"wrap_content\">  
  <RadioButton      
android:text=\"打他\"       
android:id=\"@ id/radio2\"   
android:layout_width=\"wrap_content\"  
android:layout_height=\"wrap_content\" />
  <RadioButton     
android:text=\"不打\"     
android:id=\"@ id/radio1\"    
android:layout_width=\"wrap_content\" 
android:layout_height=\"wrap_content\" />    
  </RadioGroup>  
</LinearLayout>
</LinearLayout>

因此大家把以前的R.layout.simple_list_item_1这XML改成大家立即做的,运作程序流程你也就会发觉程序流程崩了。嘿嘿,没事儿这也是常规的由于大家传到的统计数据都没有用兼容到咱们的页面上。因此人们就只有自身读过一个电源适配器来兼容我们自己的数据信息。

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,data);

电源适配器编码如下所示:

	public class myAdapter extends ArrayAdapter {   
  private final int ImageId;  
  private String radiotext;  
  public myAdapter(Context context, int headImage, List<myBean> obj){    
    super(context,headImage,obj);     
    ImageId = headImage;//这个是传到我们自己理解的页面   
  }    
  @NonNull  
  @Override   
  public View getView(final int position, @Nullable View convertView, @NonNull ViewGroup parent) {
    myBean myBean = (myBean) getItem(position);     
    View view = LayoutInflater.from(getContext()).inflate(ImageId,parent,null);//这个是创建对象一个我们自己写的页面Item    
    LinearLayout linearLayout = view.findViewById(R.id.ll_view);     
    ImageView headImage = view.findViewById(R.id.headimage);  
    TextView headText = view.findViewById(R.id.headtext);    
    RadioGroup radio = view.findViewById(R.id.radioBtn);     
    headImage.setImageResource(myBean.getImageID());       
    headText.setText(myBean.getText());     
    radio.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {//查验Radio Button那一个被点开了        
                                     @Override          
                                     public void onCheckedChanged(RadioGroup radioGroup, @IdRes int i) {       
                                          switch (i){            
                                            case R.id.radio1:           
                                              radiotext = \"不打\";         
                                              break;                 
                                            case R.id.radio2:       
                                              radiotext = \"打他\";       
                                              break;            
                                          }           
 																	   }      
 															 });      
linearLayout.setOnClickListener(new View.OnClickListener() {//查验哪一项被点开了         
                                @Override            
                                public void onClick(View view) {          
  Toast.makeText(getContext(),\"你点一下了第\" position \"项\" \"你挑选\" radiotext,Toast.LENGTH_SHORT).show();     
}      
});     
return view; 
}}

如今电源适配器也写好啦,你看看订制ListView的2个流程是否就是这样就被大家解决了,随后大家就差兼容了。下面让我们来做一下兼容:

public class MainActivity extends AppCompatActivity {     
  private List<myBean> myBeanList = new ArrayList<>();//用于封装数据的二维数组  
@Override    protected void onCreate(Bundle savedInstanceState) {        
  super.onCreate(savedInstanceState);        
  setContentView(R.layout.activity_main);        
  ListView listView = (ListView) findViewById(R.id.listview);        
  init();        
  myAdapter adapter = new myAdapter(MainActivity.this,R.layout.myitem,myBeanList);             
  listView.setAdapter(adapter);  
}  
private void init(){//复位数据信息      
  myBean bean1 = new myBean(\"aa\",R.mipmap.ic_launcher);      
  myBeanList.add(bean1);      
  myBean bean2 = new myBean(\"ss\",R.mipmap.ic_launcher);     
  myBeanList.add(bean2);     
  myBean bean3 = new myBean(\"jj\",R.mipmap.ic_launcher);      
  myBeanList.add(bean3);     
  myBean bean4 = new myBean(\"hh\",R.mipmap.ic_launcher);      
  myBeanList.add(bean4);         
  myBean bean5 = new myBean(\"dd\",R.mipmap.ic_launcher);     
  myBeanList.add(bean5);   
  myBean bean6 = new myBean(\"cc\",R.mipmap.ic_launcher);      
  myBeanList.add(bean6);      
  myBean bean7 = new myBean(\"bb\",R.mipmap.ic_launcher);     
  myBeanList.add(bean7);      
  myBean bean8 = new myBean(\"jj\",R.mipmap.ic_launcher);      
  myBeanList.add(bean8);     
  myBean bean9 = new myBean(\"kk\",R.mipmap.ic_launcher);    
  myBeanList.add(bean9);   
}

保证这儿我觉得大家都几乎基本了解了如何订制ListView了吧?哦对了!我还在写电源适配器的过程中顺带把监视事情加进去了,自然在主类写也是可以的,可是不建议那样做。对于为什么?你自己试一下就知道,由于纸上得来绝知浅嘛。

最终上一张设计效果图吧:

ListView的简单应用(一)

发觉有许多BUG呢!但是那都不是事儿,终究没哪个APP是沒有BUG的是否?

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

(0)
上一篇 2022年5月9日 上午10:49
下一篇 2022年5月9日 上午10:51

相关推荐

  • 硬盘坏道检测工具哪个好(固态硬盘坏块检测软件)

    众所周知,硬盘是计算机中最重要的硬件之一,所有重要数据都存储在硬盘中。如果你的硬盘突然崩溃导致所有重要数据都消失了,你是否不想要它? 现在,通过将HardSentinelPro安装到计算机上,不但可以实时监视硬盘的运行状况,还可以检查硬盘。你的硬盘是否仍适合使用或有多个扇区已损坏,那些想要购买二手硬盘的人也可以使用HardDiskSentinelPro软件来检测所购买硬盘的可用性。 HardDis…

    2022年5月8日
    1020
  • 手持云台哪个牌子好(性价比最高的手持云台)

    随着手机等轻薄设备的性能逐步提升,再搭上4G这条高速移动网络快车,以视频为载体记录生活的方式已经逐步成为主流,朋友圈、快手、抖音等短视频发布和视频直播软件愈发火热。对于一些有追求的视频创作者来说,以Vlog的形式记录和分享自己的生活更是成了新鲜话题,比如在B站上就有不少Vlogger们终日沉浸在视频拍摄和创作中不能自拔。要说如今视频创作的成本逐渐变低,其实我个人认为倒也不完全正确,虽然说手机在影像…

    2022年10月26日
    510
  • 运维产品发展前景怎么样(2020年IT运维市场前景分析)

    1.1 IT服务市场规模   IT作为信息化的先锋和服务业的高级形态,中国IT服务产业正逐渐被各级政府所重视。尤其在服务外包领域,商务部出台了“千百十工程”正是推动中国IT服务产业发展的重要举措,中国IT服务业已进入快速发展期。   由于数字化转型导致中国乃至全球的IT服务市场竞争格局发生变化,同时竞争格局的变化,也导致用户需求变化。而在这两种变化中产生的要求及需求类型正在推动和塑造IT服务市…

    2022年10月19日
    440
  • 企业市场营销管理办法,市场营销管理制度与表格规范大全

    一、合同填写要求 为维护公司的合法权益,加强合同管理,杜绝随意性,对合同条款的签订有以下要求: 1、合同中产品质量标准一定要写清楚,有关原材料、生产厂家、生产时间,要有明细表。 2、交货周期按合同要求,加急需收一定的加急费。 3、合同中应写上需修改或终止合同的有关内容和期限。 4、预付款实行统一管理,其每份合同的预付金额应达到该合同总额的10%-30%,特殊情况需上报销售部批准。 5、合同的最后一…

    2022年6月16日
    570
  • 免费影视剧软件哪个好(不用vip看电视剧的软件)

    哈喽,小伙伴们晚上好呀,前面有粉丝要求分享一款看电影的软件,没有问题,安排! 这款软件小编自己已经试用了好几天,没有任何问题,界面纯洁无广告,打开速度快捷无卡顿,电影类目齐全,电视剧集数最新,主要的是免费看! 好了,废话不多说,直接上软件 大师兄影视 (适用平台:安卓,苹果) 不需要注册登录,各大付费平台电影免费看,蓝光画质极速播放,支持电视投屏! 打开画面如上图,电影,电视剧,综艺,动漫一应俱全…

    2022年5月13日
    930
  • p图片软件有哪些(手机最专业的p图软件)

    给你们安利一下我最常用的六款修图调色APP(Android手机通用)顺便简单说一下优缺点,大家可以尽情去尝试 1.Snapseed(完全免费) Snapseedp 俗话说不怎么适合小白……曲线工具非常强大,且有蒙版效果,导出的照片基本也不会压缩画质。 2.VSCO(大部分预设需要会员) VSCOp 简直就是手机滤镜之王!喜欢调色的朋友们必备APP好吧,这款不多说,下ta下ta下ta! 3.Pola…

    2022年5月8日
    910
  • 戴森卷发棒测评(事实证明这款吹风机不伤发风力强大)

    万万没想到,躲过了戴森吸尘器、吹风机和无叶净化风扇,却没有躲过这款卷发棒… 戴森,一家来自英国的创新科技公司,凭什么打开了消费者的钱包??? 无扇叶净化风扇的安全理念,大马力强劲的吸尘效果,还是其简单、自然又讨喜的设计创意… 或许都不是,正如戴森爵士所说,Dyson并没有刻意的迎合消费者的审美,所根本出发点都是为了解决消费者最根本的使用需求,这就是戴森设计的初衷。 Dyson重用户体验(看…

    2022年9月5日
    560
  • 申请商标多长时间,商标注册周期及注册流程

    相信了解商标注册的朋友,都知道商标在注册时,需要花费的时间是特别之久的。那么到底注册商标需要多长时间呢,下面企帮帮小编就给您整理了以下材料,一起来看看吧。 一、商标查询、资料提交 商标查询是在商标注册之前必须要涉及的环节,在这个环节中,需要多次的查询确认商标是否有相同和近似的情况出现。如果出现这样的情况,那么会立即要求申请人对商标进行修改,以达到完全没有相同和近似的效果。 花费时间:一星期左右 二…

    2022年7月4日
    610
  • 商标注册字体有要求吗,简述宋体字与楷体字的区别

    什么是商标字体 商标中的文字使用的字体就是商标字体,可以是印刷体,也可以是手写体或是美术体。有一种例外,就是当字体以一种图案形式呈现时,就成了图形商标。 常见的付费字体: 微软雅黑 微软雅黑是Windows系统默认的字体,而Windows系统又是生活中最常见的系统,那我们使用“微软雅黑”会侵权吗?“微软雅黑”字体版权归微软公司和北京北大方正电子有限公司共有。若只在电脑上显示,或者临时打印,不用于商…

    2022年6月11日
    830
  • seo怎么做排名,提升seo网站排名的有效方法

    很多刚刚接触SEO优化的人,都会希望自己的排名可以快速提升上去,尽快见到效果。 对SEO效果的着急与焦虑,这可以说是很多新手站长都会遇到的问题。 今天小编就来聊聊这个问题,希望可以让大家正确的了解到SEO工作的实质,并及时调整策略来应对。 SEO的底层规则 很多人都会觉得SEO是一种神技,学会了就可以一步登天,在搜索引擎上“为所欲为”。 其实不然,SEO说白了就是利用搜索引擎的算法,打造出搜索引擎…

    2022年7月9日
    530

发表回复

登录后才能评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信