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

创建主布局文件
<?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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值