android_ListView
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了android_ListView,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含5316字,纯文字阅读大概需要8分钟。
内容图文
Day1
今天看了listView,并对简单的列表选择进行了实现。
首先明确一下适配器的概念,就我个人理解而言,就是连接layout.xml和Activity.java的桥梁。在xml中定义一个listView,在Java中创建一个数组,数组用于创建adapter(这里adapter也可以理解成数据源的样子),然后add到listView上。
按适配器分,listView可以分为ArrayAdapter,SimpleAdapter,SimpleCusorAdapter和自定义Adapter。
根据我学习的书本,今天实现了ArrayAdapter和自定义Adapter。
ArrayAdapter:构成listView数据项的就是简单的数组
在xml:简单的拖曳textView和listView,给他们定义id.
在java:创建数组,创建适配器(调用数组),给listView添加适配器。
为了使效果更加明显,给listView添加OnItemClick方法,实现OnCLick方法,获取到它的ToString值,赋给TextView,这样就能很直观的体现出来了。
其中listView又可以实现 单选和多选 两种模式,改一下Adapter的layout和listView的choiceMode就可以.
按照书上的跑了一遍例子,代码如下:
1 public class ListView1 extends ActionBarActivity { 2 3private TextView textView; 4private TextView txtContent; 5private ListView listView; 6private Button button; 7int count =0; 8 String [] Balls = new String[]{"basketball","soccer","baseball","篮球","足球","排球"}; 910 @Override 11protectedvoid onCreate(Bundle savedInstanceState) { 12super.onCreate(savedInstanceState); 13 setContentView(R.layout.activity_list_view1); 14 txtContent =(TextView)findViewById(R.id.textView); 15 textView =(TextView)findViewById(R.id.textView2); 16 listView = (ListView)findViewById(R.id.listView); 17 button = (Button)findViewById(R.id.button); 18//单选 19// ArrayAdapter<String>adapterBalls = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,Balls); 20//多选21 ArrayAdapter<String>adapterBalls = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_multiple_choice,Balls); 22 listView.setAdapter(adapterBalls); 23 listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);//可多选24 count = adapterBalls.getCount(); 25 button.setOnClickListener(btnListener); 2627 listView.setOnItemClickListener(lstListener); 28 listView.setTextFilterEnabled(true); 29 listView.setSelector(R.drawable.tar); 30 listView.setSelection(3); 31 } 32private ListView.OnItemClickListener lstListener = new ListView.OnItemClickListener(){ 33publicvoid onItemClick(AdapterView<?>parent,View v,int position,long id){ 34//单选 35// String sel = parent.getItemAtPosition(position).toString(); 36// textView.setText("我最喜欢的球类运动:"+sel);37if(listView.isItemChecked(position)){ 38 String sel = parent.getItemAtPosition(position).toString();//parents??? position是指选项的位置。39 txtContent.setText("目前选择:"+sel); 40 }else{ 41 txtContent.setText("目前选择:"); 42 } 43 } 44 }; 4546private Button.OnClickListener btnListener = new Button.OnClickListener(){ 47publicvoid onClick(View v){ 48 String selAll = ""; 49for(int i=0;i<count;i++){ 50if(listView.isItemChecked(i)) {//已复选51 selAll +=Balls[i]; 52 } 53 } 54 textView.setText(selAll); 55 } 56 }; 57 }
自定义Adapter:构成listView数据项的是由自己定义的,类似结构体。
就是比如你的listView中的每一个选项都需要一张图片,一行简介和一个按钮。
那你最好自己自定义一个layout,里面有你想设计成的item的样式,再在Java中重写适配器,因为要达到一种效果就是new 适配器的时候,要把item里面的所有元素都初始化好。
在xml:一个是本来就有的xml,里面就有textView和ListView,另一个额外的xml是你自己设定的item的样式。
在java:按照普通的listView来实现,然后在onCreat()方法下面新建一个内部类myAdapter,继承自BaseAdapter,主要实现他的getView功能就OK。
1 package com.example.administrator.myapplication; 2 3 import android.content.Context; 4 import android.support.v7.app.ActionBarActivity; 5 import android.os.Bundle; 6 import android.view.LayoutInflater; 7 import android.view.Menu; 8 import android.view.MenuItem; 9 import android.view.View; 10 import android.view.ViewGroup; 11 import android.widget.BaseAdapter; 12 import android.widget.ImageView; 13 import android.widget.ListView; 14 import android.widget.TextView; 15 /* 16 自定义list列表 17 自定义list的item的布局 my_adaoter.xml 18 自定义适配器MyAdapter 内部类 19 */ 20 21 public class ListView2 extends ActionBarActivity { 2223private TextView txtName; 24private ListView listName; 25int [] resIds = newint[]{R.drawable.tar,R.drawable.serach}; 26 String []Balls = new String[]{"星星","搜索"}; 27 String []engNames = new String[]{"star","search"}; 28 MyAdapter adapter = null; 29 @Override 30protectedvoid onCreate(Bundle savedInstanceState) { 31super.onCreate(savedInstanceState); 32 setContentView(R.layout.activity_list_view2); 33 txtName = (TextView)findViewById(R.id.textView3); 34 listName = (ListView)findViewById(R.id.listView2); 35 adapter=new MyAdapter(this); 36 listName.setAdapter(adapter); 37 } 3839publicclass MyAdapter extends BaseAdapter { 40private LayoutInflater myInflater; 41public MyAdapter(Context c){ 42 myInflater=LayoutInflater.from(c); 43 } 44publicint getCount(){ 45return Balls.length; 46 } 47public Object getItem(int position){ 48return Balls[position]; 49 } 50publiclong getItemId(int position){ 51return position; 52 } 53public View getView(int position,View convertView,ViewGroup parent){ 54 convertView=myInflater.inflate(R.layout.activity_my_adapter,null); 55//获取myadapter.xml中的组件56 ImageView imgLogo = (ImageView)convertView.findViewById(R.id.imageView); 57 TextView txtName = (TextView)convertView.findViewById(R.id.txtName); 58 TextView txtEngName = (TextView)convertView.findViewById(R.id.txtEngName); 59//设置组件内容60 imgLogo.setImageResource(resIds[position]); 61 txtName.setText(Balls[position]); 62 txtEngName.setText(engNames[position]); 6364return convertView; 65 } 66 } 6768 }
THE ENDDING......
1.敲代码的时候打listView.后面就会出现好多的方法,觉得最好的学习还是要看一下API之类的官方文档,学习掌握更加全面。
2.现在过第一遍的确是理解了,但这个东西吧,特别容易忘,几天不上手就容易记忆模糊,需要在记忆方面下点苦功。多尝试不借助外力,徒手实现代码。
3.关于SimpleAdapter,SimpleCusorAdapter,内容和思想也和上述的Adapter也大致相同吧,下次补上。
原文:http://www.cnblogs.com/zjuthdf/p/5357567.html
内容总结
以上是互联网集市为您收集整理的android_ListView全部内容,希望文章能够帮你解决android_ListView所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。