用类对象作为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的更多相关文章

  1. 我的android学习经历

    我为什么选择android? 我基本上前一年的时间都是在学习java的语法和线程之类的,没有注意java的分类,所以到现在慢慢接触到深处的时候我了解到,java的优势主要在web,而我不是特别喜欢网页 ...

  2. 我的android学习经历36

    最近把android的基础知识都学的差不多了,也写了许多demo,就想自己写一个app,可是写到后面的时候发现很混乱,所以还是得写一些文档,用xml语言写一下基础的类以及一些其他的东西.所以要想写一个 ...

  3. 我的android学习经历27

    前几天忙着学校的互联网+项目比赛,没有时间学习android和发一些东西,主要是这两天太累了,我是项目组长,好多东西去弄,今天已经交稿去进行初赛. 马上收拾收拾心情,继续我的andorid菜鸟之路 加 ...

  4. 我的android学习经历23

    学习fragment时遇到的问题 这几天学习fragment静态加载时遇到这样的问题: java.lang.RuntimeException: Unable to start activity Com ...

  5. 我的android学习经历9

    给android的activity添加背景图片 1.你可以在网上下载android的图片,也可以制作自己的图片,图片的后缀为.png,也就是png格式的图片(注意图片的大小要适合你的手机屏幕或者AVD ...

  6. 我的android学习经历7

    android签名后报错的问题 Duplicate id @+id/imageView, already defined earlier in this layout,android生成报错 这个是项 ...

  7. 我的android学习经历5

    android在strings.xml文件中,写string对象时,如何加入空格 <string name="password">密    码:</string& ...

  8. 我的android学习经历40

    为listview设置背景,并且不随拖动改变 <ListView android:id="@+id/list_view" android:layout_width=" ...

  9. 我的android学习经历39

    关于像第一次进qq一样的那个渐变企鹅图的制作 渐变动画 package com.moonweather.app.activity; import com.moonweather.app.R; impo ...

随机推荐

  1. IOS第一天

    第一天(hello world) 1>UIView所有的控件都继承UIView,倒位置,宽度和高度..UIButton UILable 2>UIViewController .h 是声明属 ...

  2. Flink -- Failover

      JobManager failover   LeaderLatch private synchronized void setLeadership(boolean newValue){ boole ...

  3. rabbitmq之partitions

    集群为了保证数据一致性,在同步数据的同时也会通过节点之间的心跳通信来保证对方存活.那如果集群节点通信异常会发生什么,系统如何保障正常提供服务,使用何种策略回复呢? rabbitmq提供的处理脑裂的方法 ...

  4. 在VS2013中查看C/C++预处理后的文件

    1.右键工程(例子中是myproject),选择[属性],在弹出的对话框中,选择[配置属性]-->[C/C++]-->[预处理器],将[预处理到文件]该为[是],应用,确认. 2.在VS ...

  5. Java 操作符

    子系统的特点 instanceof 操作符 Animal类是Dog的直接父类,Creature类和Object类是Dog的间接父类,因此 Dog dog=new Dog(); System.out.p ...

  6. IE10 透明背景的div无法遮罩

    在IE10中无法遮罩button按钮 <input type="button" value="76576" /> <div style=&qu ...

  7. angularJs指令执行的机制==大概的三个阶段

    第一阶段:加载阶段 angularJs要运行的话,需要去等待angular.js加载完成,加载完之后呢,angular就会去查找到ng-app这个指令,ng-app在每个应用里面只能出现一次, 它也就 ...

  8. 《奥威Power-BI销售计划填报 》精彩回顾

    我们经常遇到这样的问题:业务单据是来自ERP系统,销售计划是EXCEL做的,想把两者整合在一起做分析,怎么办? 单据大,导出EXCEL太费劲,也很难分析到历史数据,但又不能动ERP系统 (自己也不会改 ...

  9. NULLIF()函数使用讲解

    NULLIF()函数接受两个参数.如果它们相等,那么返回空值:否则,返回第一个参数. 等价于下面的表达式: case when expression1=expression2 then null el ...

  10. IntelliJ IDEA Community Edition 14.1.4下使用 Apache-Subversion搭建代码管理环境

    当前我的idea 版本是14.1.4. 1,)SVN Server下载与安装(https://www.visualsvn.com/server/): 因为我开发机是x64的,所以我优先下载 x64的 ...