安卓ListView控件显示
2016-08-13 14:33
225 查看
No 1. 安卓ListView 控件控件的显示。
版权声明:喝水不忘挖井人,转载请注明出处,841579064@qq.com。ListView控件需要显示出来并没有直接的方法可以显示,需要通过设置适配器(Adapter)进行显示的。以下介绍三个常用的适配器的用法。
BaseAdapterArrayAdapter
SimpleAdapte
首先完成MainActivity的布局文件
添加ListView控件
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.jw_chen.a_company.mynews.MainActivity"> <!--此处为MainActivity添加一个ListView--> <ListView android:id="@+id/Lv" android:layout_width="match_parent" android:layout_height="match_parent"></ListView> </RelativeLayout>
然后我们来给ListView设置要显示的条目
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content"> <ImageView android:id="@+id/iv" android:layout_width="80" android:layout_height="80" android:src="@mipmap/ic_launcher" android:layout_centerVertical="true"/> <TextView android:id="@+id/titles" android:layout_width="wrap_content" android:layout_height="wrap_content" android:singleLine="true" android:layout_toRightOf="@id/iv" android:text="大标题栏" android:textSize="22sp"/> <TextView android:id="@+id/detail" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@+id/titles" android:layout_toRightOf="@+id/iv" android:textColor="@android:color/darker_gray" android:lines="3" android:text="内容"/> <TextView android:id="@+id/comment" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/detail" android:layout_alignParentRight="true" android:textColor="@android:color/holo_red_dark" android:text="评论。。。"/> </RelativeLayout>
上面这份代码就定义了条目要显示的内容,分别是三个TextView和一个ImageView。
布局文件定义好了。我们来给ImageView导入几张图片资源文件 以备ImageView调用
准备工作都完成了,下面开始调用ListView来显示我们布局的效果
定义一个信息类,用来创建我们要显示的对象:package com.jw_chen.a_company.mynews; /** * Created by Jw_chen on 2016/8/9. */ public class News { private String title; private String detail; private String comment; private String imageUrl;//该变量在网络下载图片才用到存网址 public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getDetail() { return detail; } public void setDetail(String detail) { this.detail = detail; } public String getComment() { return comment; } public void setComment(String comment) { this.comment = comment; } public String getImageUrl() { return imageUrl; } public void setImageUrl(String imageUrl) { this.imageUrl = imageUrl; } }
修改MainActivity中代码:
public class MainActivity extends AppCompatActivity { private ListView listview; List<News> newsList = null; //对象我们用一个list集合去存储 News news = null;//news对象 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); newsList = new ArrayList<>(); //把list new出来 listview = (ListView) findViewById(R.id.Lv);//找到ListView控件 //我们创建10个对象并保存到集合中 for (int i = 0; i < 10; i++) { news = new News(); news.setTitle("ListView显示 - "+i); news.setDetail("小智是个大睡个+" + i); news.setComment("2134100"); news.setImageUrl("http://baidu.com___ "+i%2); newsList.add(news); //添加到集合中 news = null; } listview.setAdapter(new BaseAdapter() { @Override public int getCount() { return newsList.size();//此处返回要显示的条目总数 } @Override public Object getItem(int position) { return null; } @Override public long getItemId(int position) { return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { View v = null; //此处我将资源id保存到一个数组里面 int[] tp = new int[]{R.drawable.tp_1,R.drawable.tp_2,R.drawable.tp_3,R.drawable.tp_4,}; int choose = 3;//布局文件填充成view对象的方式有三种写法。此处只是定义一个变量来选择用哪种方法,实际开发掌握第一种就好,但是要能看得懂其他写法 switch (choose) { case 1: { v = View.inflate(MainActivity.this, R.layout.items, null);//View填充好了就可以找到view中定义的控件并显示数据了 } break; case 2: { LayoutInflater inflater = LayoutInflater.from(MainActivity.this);//获取一个布局文件填充器 v = inflater.inflate(R.layout.items, null); //拿布局文件填充器填充对象 } break; case 3: LayoutInflater inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);//获取系统服务服务 v = inflater.inflate(R.layout.items, null); break; } TextView title = (TextView) v.findViewById(R.id.titles); TextView detail = (TextView) v.findViewById(R.id.detail); TextView comment = (TextView) v.findViewById(R.id.comment); ImageView iv = (ImageView) v.findViewById(R.id.iv); title.setText(newsList.get(position).getTitle()); detail.setText(newsList.get(position).getDetail()); comment.setText(newsList.get(position).getComment()); iv.setImageResource(tp[position%4]);//由于图片比较少,此处我们重复利用 return v;//自处返回填充的Viwe对象 } }); } }
以上内容部署完成后就和一显示一个ListView界面了。
BaseAdapter完成了,其他两个同理。
ArrayAdapterlistview.setAdapter(new ArrayAdapter<String>(MainActivity.this, R.layout.items, R.id.titles, new String[]{ "张三0","张三1","张三2","张三3","张三4","张三5","张三6" }));
SimpleAdapter
List<Map<String, Object>> nlist = new ArrayList<>(); int[] tp = new int[]{R.drawable.tp_1,R.drawable.tp_2,R.drawable.tp_3,R.drawable.tp_4,}; for (int i = 0; i < 10; i++) { Map<String,Object> map = new HashMap(); map.put("tp", tp[i%4]); map.put("name", newsList.get(i).getTitle()); nlist.add(map); } listview.setAdapter(new SimpleAdapter(MainActivity.this, nlist, R.layout.items, new String[]{"tp","name"},new int[]{R.id.iv,R.id.titles}));
相关文章推荐
- 安卓控件使用系列34:ListView列表控件显示表单的使用方法1
- 学习笔记之安卓的显示控件ListView
- 安卓控件使用系列35:ListView列表控件显示表单的使用方法2
- 【Android开发学习28】界面控件之列表控件(ListView)--显示字符数组
- ScrollView中若嵌套有滑动的控件(如:WebView,ListView或GridView),另外该界面中还有其它的控件时,界面不显示最上面控件的问题。
- ASP.NET-C# listview控件显示文件夹内的文件名及路径
- [Android开发] 代码code设置9.png/9-patch 图片背景后,此view中的TextView等控件显示不正常(常见于listview中)
- C# 学习笔记(一) ListView控件显示数据库表信息
- 想在C#中的listView 控件中显示图片:
- 控制带有滚动条的控件(ListView,TreeView等)的滚动条显示
- ListView应用------ListView控件显示List集合中的数据,并对Item响应选择事件(法一)
- ListView 控件扩展样式(有网格线、整行选择、始终显示选择项)
- 对于ListView中自定义Adapter出现的控件显示错乱现象的解决方案!
- 安卓Android控件ListView获取item中EditText值
- 12-界面控件之listView使用java代码和xml文件不同方式实现列表显示
- ListView通过自定义适配器来显示数据并对Item项以及子view项的控件实现监听.
- listView滑条自动跳转,显示控件的新条目
- 控制带有滚动条的控件(ListView,TreeView等)的滚动条显示
- 安卓Android控件ListView获取item中EditText值
- C#调用P/Invoke显示、隐藏和移动ListView 控件中的滚动条