第七天ListView与BaseAdapter适配器混合运用

来源:互联网 发布:utorrent mac版 编辑:程序博客网 时间:2024/06/05 14:20
创建主布局文件
<?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"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context="com.jeredu.administrator.classday7application.listdemo.List3Activity">    <ListView        android:layout_width="match_parent"        android:layout_height="match_parent"        android:id="@+id/lv3"></ListView></RelativeLayout>
其中在ListView标签当中还这些标签
listSelector 背景颜色
scrollbars  是否显示有侧边滑动条;有三个属性,不显示为none
dividerHeight  ListView布局中的分割线效果可以设置宽度

用来创建Activity主布局文件用来显示ListView

创建BaseAdapter调用布局,用在主布局上显示新闻所需要的标签图片等

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical"    android:layout_width="match_parent"    android:layout_height="match_parent">    <TextView        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:gravity="center"        android:text="我是标题"        android:id="@+id/title"        android:layout_centerHorizontal="true" />    <TextView        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:gravity="center"        android:id="@+id/from"        android:text="未来网"        android:layout_below="@+id/iv"        android:layout_alignParentStart="true" />    <ImageView            android:layout_width="60dp"            android:layout_height="60dp"            android:src="@mipmap/ic_launcher"            android:id="@+id/iv"            android:scaleType="centerCrop"            android:layout_below="@+id/title"            android:layout_alignParentEnd="true" />    <TextView        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="今天  "        android:id="@+id/pubDate"        android:gravity="center"        android:layout_alignEnd="@+id/iv"        android:layout_below="@+id/iv"        android:layout_alignStart="@+id/iv" /></RelativeLayout>

这就是新闻的一条 ,然后通过BaseAdapter方法调用在主布局ListView实现多条新闻

编写BaseAdapter方法 首先创建新闻类

<span style="font-size:12px;">package com.jeredu.administrator.classday7application.entity;/** * Created by Administrator on 2016/8/3. */public class News {    private  String title;    private  String pubDate;    private String newID;    private int img;    private  String from;    public News (){}    public News(String title, String pubDate, String newID, int img, String from) {        this.title = title;        this.pubDate = pubDate;        this.newID = newID;        this.img = img;        this.from = from;    }    public String getTitle() {        return title;    }    public void setTitle(String title) {        this.title = title;    }    public String getPubDate() {        return pubDate;    }    public void setPubDate(String pubDate) {        this.pubDate = pubDate;    }    public String getNewID() {        return newID;    }    public void setNewID(String newID) {        this.newID = newID;    }    public int getImg() {        return img;    }    public void setImg(int img) {        this.img = img;    }    public String getFrom() {        return from;    }    public void setFrom(String from) {        this.from = from;    }</span><span style="font-size:12px;">}</span>

新闻类当中包含新闻布局里面的 标题 时间 图片 来源布局中所用的标签

编写BaseAdapter方法

package com.jeredu.administrator.classday7application.entity;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.TextView;import android.widget.Toast;import com.jeredu.administrator.classday7application.R;import java.util.List;/** * Created by Administrator on 2016/8/3. */public class MyListAdaper extends BaseAdapter{    private List<News>myDate;    private Context context;    public  MyListAdaper(Context context,List<News>myDate){        this.myDate=myDate;        this.context=context;    }    @Override    public int getCount() {        return myDate.size();    }    @Override    public Object getItem(int i) {        return myDate.get(i);    }    @Override    public long getItemId(int i) {        return 0;    }    @Override    public View getView(final int i, View view, ViewGroup viewGroup) {<span style="color:#FF6666;">//        View view= LayoutInflater.from(context).inflate(R.layout.list3_layout_base,null);//        TextView title= (TextView) view.findViewById(R.id.title);//        TextView pubDate= (TextView) view.findViewById(R.id.pubDate);//        TextView from= (TextView) view.findViewById(R.id.from);//        ImageView img = (ImageView) view.findViewById(R.id.iv);//        News news =myDate.get(i);//        title.setText(news.getTitle());//        pubDate.setText(news.getPubDate());//        from.setText(news.getFrom());//        img.setImageResource(news.getImg());</span>        ViewHolder vh ;        if(view == null){            vh = new ViewHolder();            view = LayoutInflater.from(context).inflate(R.layout.list3_layout_base,null);            vh.title= (TextView)view.findViewById(R.id.title);            vh.img = (ImageView) view.findViewById(R.id.iv);            vh.pubDate= (TextView) view.findViewById(R.id.pubDate);            vh.from= (TextView) view.findViewById(R.id.from);            view.setTag(vh);        }else{            vh=(ViewHolder) view.getTag();        }        vh.img.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                Toast.makeText(context,"点击了图片"+i,Toast.LENGTH_SHORT).show();            }        });        News news =myDate.get(i);        vh.title.setText(news.getTitle());        vh.pubDate.setText(news.getPubDate());        vh.from.setText(news.getFrom());        vh.img.setImageResource(news.getImg());        return view;    }    public class ViewHolder{        TextView title;        ImageView img;        TextView pubDate;        TextView from;    }}
方法中红色字体写的是不考虑资源占用等因素直接编写的方法,而另一种采用ViewHolder这种方法资源占有少,只用创建一次或是说调用一次布局文件,之后执行else之后的内容进行往主布局里面写新闻

主布局编写代码调用方法,并把所要添加的新闻

<span style="font-size:12px;">package com.jeredu.administrator.classday7application.listdemo;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.widget.ListView;import com.jeredu.administrator.classday7application.R;import com.jeredu.administrator.classday7application.entity.MyListAdaper;import com.jeredu.administrator.classday7application.entity.News;import java.util.ArrayList;import java.util.List;public class List3Activity extends AppCompatActivity { private ListView lv3;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_list3);        lv3= (ListView) findViewById(R.id.lv3);        List<News> list = new ArrayList();        News ns =new News("新闻1","刚刚","n001",R.mipmap.ic_launcher,"新浪网");        list.add(ns);        ns =new News("新闻2","今天","n002",R.mipmap.ic_launcher,"腾讯网");        list.add(ns);        ns =new News("新闻3","昨天","n003",R.mipmap.ic_launcher,"百度网");        list.add(ns);        ns =new News("新闻4","刚刚","n004",R.mipmap.ic_launcher,"新浪网");        list.add(ns);        ns =new News("新闻5","刚刚","n005",R.mipmap.ic_launcher,"新浪网");        list.add(ns);        ns =new News("新闻6","刚刚","n006",R.mipmap.ic_launcher,"新浪网");        list.add(ns);        ns =new News("新闻7","刚刚","n007",R.mipmap.ic_launcher,"新浪网");        list.add(ns);        ns =new News("新闻8","刚刚","n008",R.mipmap.ic_launcher,"新浪网");        list.add(ns);        lv3.setAdapter(new MyListAdaper(this,list));    }}</span>
一共写了8条新闻在运行之后可以在ListView里面看到8条新闻

0 0
原创粉丝点击