我的android学习经历34
用类对象作为ArrayAdapter绑定的基本数据类型(和SimpleAdater效果类似)
一般ArrayAdapter绑定的基本数据类型是String,接下来介绍一下类对象作为基本数据类型;
首先,新建一个类News,这个类作为基本的数据类型
package com.example.news;
import android.R.integer;
import android.widget.ImageView;
public class News {
private String title;
private String content;
private int imageId;
News(String title,String content,int imageId){
this.title=title;
this.content=content;
this.imageId=imageId;
}
public String getTitle() {
return title;
}
public String getContent() {
return content;
}
public int getimageId() {
return imageId;
}
public void setTitle(String title){
this.title=title;
}
public void setContent(String content){
this.content=content;
}
}
接下来先把listView的item的布局确定下来,有一个Textview和ImageView;
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/news_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<ImageView
android:id="@+id/news_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
然后自定义一个适配器NewsAdapter,继承ArrayAdapter,并且实现其中的两个方法,resourceId也就是上面的listView的item的布局的id;
package com.example.news;
import java.util.List;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;
public class NewsAdapter extends ArrayAdapter<News>{
private int resourceId;
public NewsAdapter(Context context, int resource, List<News> objects) {
super(context, resource, objects);
// TODO Auto-generated constructor stub
resourceId=resource;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
News news=getItem(position);
View view ;
if(convertView==null){
view=LayoutInflater.from(getContext()).inflate(resourceId, null);
}else {
view=convertView;
}
TextView news_title=(TextView) view.findViewById(R.id.news_title);
ImageView news_image=(ImageView) view.findViewById(R.id.news_image);
news_title.setText(news.getTitle());
news_image.setImageResource(news.getimageId());
return view;
}
}
然后在主布局中添加一个listview控件,这个简单,大家肯定都会
<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="${relativePackage}.${activityClass}" >
<ListView
android:id="@+id/list_title"
android:layout_width="wrap_content"
android:layout_height="match_parent"></ListView>
</RelativeLayout>
然后重写主activity
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ListView;
public class MainActivity extends Activity {
private ListView list_title;
private List<News> list= new ArrayList<News>();
private NewsAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
list_title=(ListView) findViewById(R.id.list_title);
initList();
adapter=new NewsAdapter(this, R.layout.news_item,list);
list_title.setAdapter(adapter);
}
private void initList() {
News news1=new News("标题1", "1", R.drawable.ic_launcher);
list.add(news1);
News news2=new News("标题2", "2", R.drawable.ic_launcher);
list.add(news2);
News news3=new News("标题3", "3", R.drawable.ic_launcher);
list.add(news3);
News news4=new News("标题4", "4", R.drawable.ic_launcher);
list.add(news4);
}
}
界面效果

不懂得可以留言
我的android学习经历34的更多相关文章
- 我的android学习经历
我为什么选择android? 我基本上前一年的时间都是在学习java的语法和线程之类的,没有注意java的分类,所以到现在慢慢接触到深处的时候我了解到,java的优势主要在web,而我不是特别喜欢网页 ...
- 我的android学习经历36
最近把android的基础知识都学的差不多了,也写了许多demo,就想自己写一个app,可是写到后面的时候发现很混乱,所以还是得写一些文档,用xml语言写一下基础的类以及一些其他的东西.所以要想写一个 ...
- 我的android学习经历27
前几天忙着学校的互联网+项目比赛,没有时间学习android和发一些东西,主要是这两天太累了,我是项目组长,好多东西去弄,今天已经交稿去进行初赛. 马上收拾收拾心情,继续我的andorid菜鸟之路 加 ...
- 我的android学习经历23
学习fragment时遇到的问题 这几天学习fragment静态加载时遇到这样的问题: java.lang.RuntimeException: Unable to start activity Com ...
- 我的android学习经历9
给android的activity添加背景图片 1.你可以在网上下载android的图片,也可以制作自己的图片,图片的后缀为.png,也就是png格式的图片(注意图片的大小要适合你的手机屏幕或者AVD ...
- 我的android学习经历7
android签名后报错的问题 Duplicate id @+id/imageView, already defined earlier in this layout,android生成报错 这个是项 ...
- 我的android学习经历5
android在strings.xml文件中,写string对象时,如何加入空格 <string name="password">密 码:</string& ...
- 我的android学习经历40
为listview设置背景,并且不随拖动改变 <ListView android:id="@+id/list_view" android:layout_width=" ...
- 我的android学习经历39
关于像第一次进qq一样的那个渐变企鹅图的制作 渐变动画 package com.moonweather.app.activity; import com.moonweather.app.R; impo ...
随机推荐
- Redis菜鸟汇总
1.是完全开源免费的,用C语言编写的,遵守BSD协议,是一个高性能的(key/value)分布式内存数据库,基于内存运行并支持持久化的NoSQL数据库,是当前最热门的NoSql数据库之一,也被人们称为 ...
- Centos7 安装codeblock( 转载)
1.安装gcc,需要c和c++两部分,默认安装下,CentOS不安装编译器的,在终端输入以下命令即可 yum install gcc yum install gcc-c++ 2.安装gtk2-deve ...
- Ceph与OpenStack的Nova相结合
https://ervikrant06.wordpress.com/2015/10/24/how-to-configure-ceph-as-nova-compute-backend/ 在Ceph的ad ...
- 【iCore3 双核心板】例程三十一:HTTP_IAP_FPGA实验——更新升级FPGA
实验指导书及代码包下载: http://pan.baidu.com/s/1gdYnQGN iCore3 购买链接: https://item.taobao.com/item.htm?id=524229 ...
- SHARE NOTHING SHARE EVERYTHING
http://mp.weixin.qq.com/s?__biz=MjM5ODYwMjI2MA==&mid=2649736156&idx=1&sn=23931f48282f6ef ...
- mysql5.5 修改字符集
对于使用者来说,一般推荐使用utf8编码来存储数据.而要解决乱码问题,不单单是MySQL数据的存储问题,还和用户的程序文件的编码方式.用户程序和MySQL数据库的连接方式都有关系. 首先,MySQL有 ...
- 一个支持FMX.Win框架的托盘控件
不多说了 直接上代码........有任何问题请给我邮件.... // **************************************************************** ...
- win7下用mklink命令解决delphiXE系列占用C盘空间的问题
DelphiXE从2010以后, 安装程序安装完成后都会在ProgramData目录里复制一份安装程序的备份, 随着版本升级安装包越来越大, 占用C盘的空间也就越来越大 虽然可以通过删除的方式删掉, ...
- Wysiwyg Editors 标签过滤
针对October CMS编辑器插件取消自动过滤DIV标签开关: 找到modules\backend\formwidgets\richeditor\assets\vendor\redactor\red ...
- zepto源码--核心方法4(包装)--学习笔记
主要介绍一下wrap, wrapAll, wrapInner, unwrap方法. wrapAll 在所有匹配元素外面包一个单独的结构.结构可以是单个元素或 几个嵌套的元素,并且可以是html字符串或 ...