我的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);
    }

}

界面效果

不懂得可以留言

时间: 2024-12-25 01:54:25

我的android学习经历34的相关文章

我的android学习经历

我为什么选择android? 我基本上前一年的时间都是在学习java的语法和线程之类的,没有注意java的分类,所以到现在慢慢接触到深处的时候我了解到,java的优势主要在web,而我不是特别喜欢网页的设计开发,相比较而言,更喜欢软件之类的app式的软件,所以现在记录下我为什么选择android,java的主要发展方向: 1.java web 2.android 3.企业级信息系统 4.大数据云计算等等 现在技术的主要发展方向: 1.云计算,大数据 2.web开发设计 3.移动端设计开发app(

我的android学习经历23

学习fragment时遇到的问题 这几天学习fragment静态加载时遇到这样的问题: java.lang.RuntimeException: Unable to start activity ComponentInfo{..........}: android.view.InflateException: Binary XML file line #..: Error inflating class fragmen 这个是版本兼容的问题,fragment是android3.0以后加的,所以需要

我的android学习经历4

部门常用控件的列举 今天介绍一下最最常用的最基本的控件 1.Button 按钮 2.TextView 文本显示(相当于java控件中的Label) 3.EditText 编辑文本框 (相当于java控件中的TextField) 4.RadioGroup和RadioButton 单选按钮控件.因为两个经常结合起来用,所以放在一起 5.CheckBox 多选按钮 6.Toast 可以用来输出提示信息 当然android的控件还很多,到后面会慢慢介绍.从上面的列举中也看到android的控件和java

我的android学习经历12

自动匹配输入的内容(文章最后有一个问题有兴趣的可以解答一下,谢谢大神了) 这个主要是两个控件MultiAutoCompleteTextView和AutoCompleteTextView 这两个控件和TextView的主要区别就是可以自动匹配用户输入的内容,就像百度,在百度的搜索框中输入信息时,会提示你一些信息 这两个控件的属性主要比TextView多了一个属性   android:completionThreshold="2",这个属性主要是来说明用户输入多少字符时开始匹配(我这里是两

Android学习笔记(34):Android菜单

Android的菜单分为三种类型:选项菜单(Option Menu).上下文菜单(Context Menu).子菜单(Sub Menu). 选项菜单(Option Menu):按设备上的菜单按钮(Menu)会出现的菜单.不支持勾选标记. 上下文菜单(Context Menu):长按某个组件会出现的菜单.不支持菜单项图标. 子菜单(SubMenu):就是子菜单.不支持菜单项图标,不支持嵌套子菜单. Menu类用于添加菜单项和子菜单的方法是add()和addSubMenu(): MenuItem a

我的android学习经历35

这几天又把android的基础知识全部复习了一遍,没有第一次那么难,感觉简单了好多,也发现了许多细节问题,发现了自己在网络编程方面的不足. 下面列举一些小的细节问题: 1.String,StringBuilder,StringBuffer三者的区别 String是对一串字符进行操作,属于不可变类,.一旦被创建,就不能修改他,对于已经存在的String对象的修改都是重新创建一个对象,然后把新的值保存进去.final类,不能被继承. StringBuffer是对一串字符进行操作,属于可变类,只能通过

我的android学习经历33

在Activity中添加菜单 1.在res目录下新建文件夹menu 右击res,选择new->Folder,Folder name写为menu 2.在新建的menu目录下新建一个xml文件 右击menu,点击new->Android XML File,在弹出的框中填入一个名字,比如main,点击Finish 3.在新建的main.xml文件中写入你需要的菜单项item,如下: 1 <?xml version="1.0" encoding="utf-8&quo

我的android学习经历19

怎样在标题栏中显示进度条 import android.app.Activity;import android.os.Bundle;import android.view.Window; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //调用窗口有特征,启用

我的android学习经历39

关于像第一次进qq一样的那个渐变企鹅图的制作 渐变动画 package com.moonweather.app.activity; import com.moonweather.app.R; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.animation.AlphaAnimati