第二天

第二天

Adapter

1、声明listview的属性和声明用来存放显示数据的属性
2、初始化listview
3、给listview绑定适配器
4、将listview添加到Activity
**ArrayAdapter



import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {

    //ArrayAdapter 步骤1:声明一个ListView属性
    private ListView mListView;
    //声明一个属性用来存放要显示的数据
    private List<String> data;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //ArrayAdapter 步骤二:初始化ListView
        mListView=new ListView(this);
        //ArrayAdapter 步骤三:给ListView绑定适配器
        //第一个参数是传递一个上下文对象
        //第二个参数是系统预先提供好的一种简单的布局文件
        //第三个参数是你要用arraylist来显示的数据是什么
        mListView.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_expandable_list_item_1,getData()));

        //ArrayAdapter步骤4:将ListView添加到Activity上
        setContentView(mListView);
    }
    //arrayList数据里显示的名字
    private  List<String> getData(){
        data=null;
        //如果一个方法可能会被多次调用,
        // 而这个方法中又存在对类成员变量的初始化赋值
        //在初始化之前,先将其置空
        data=new ArrayList<String>();
        data.add("吕布");
        data.add("德玛西亚");
        data.add("貂蝉");
        data.add("信爷");
        data.add("孙悟空");
        return data;
    }
}

做出来的效果是
这里写图片描述

**SimpleAdapter
// 步骤1:创建一个布局文件,用来给每个Item(Cell)进行布局
布局样式可以自己设定样式
//步骤2:在MainActivity布局文件中添加ListView
//步骤3:声明属性并且进行初始化
//步骤4:创建一个simple适配器
//步骤5:将adapter和listview进行绑定



import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.ListView;
import android.widget.SimpleAdapter;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


//SimpleAdapter是一种基本版的完成的列表视图
public class MainActivity extends AppCompatActivity {
    //simpleAdapter可以进行布局文件定制,从而达到自定义的效果

    //simpleAdapter
    // 步骤1:创建一个布局文件,用来给每个Item(Cell)进行布局
    //listView在iOS开发里面叫UITableView
    //iOS里面没有包的概念,有命名空间


    //simpleAdapter 步骤2:
    //在MainActivity布局文件中添加ListView

    //simpleAdapter 步骤3:
    //声明属性并且进行初始化
    private ListView mlistView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        //进行初始化
        mlistView = (ListView) findViewById(R.id.main_listView);

        //simpleAdapter 步骤4:
        //创建一个simple适配器
        //参数一:上下文对象
        //参数二:要显示的数据
        //参数三:数据显示的布局文件
        //参数四:数据提取时用到的键
        //参数五:数据对应的布局文件中的控件id
        SimpleAdapter adapter = new SimpleAdapter(this, getData(),
                R.layout.list_item_layout, new String[]{"image", "title", "info"},
                new int[]{R.id.list_image, R.id.list_item_title, R.id.list_item_info}
        );


        //simpleAdapter 步骤5:
        //将adapter和listview进行绑定
        mlistView.setAdapter(adapter);

    }

    //在这个方法里面进行数据的创建和初始化,拼装要显示的数据
    private List<Map<String, Object>> getData() {
        List<Map<String, Object>> list = new ArrayList<>();
        Map<String, Object> map = new HashMap<>();
        map.put("image", R.drawable.lml);
        map.put("title", "面朝大海");
        map.put("info", "春暖花开");
        list.add(map);

        Map<String, Object> map1 = new HashMap<>();
        map1.put("image", R.drawable.fdx);
        map1.put("title", "中国人");
        map1.put("info", "是一家");
        list.add(map1);

        Map<String, Object> map2 = new HashMap<>();
        map2.put("image", R.drawable.a4);
        map2.put("title", "英雄联盟");
        map2.put("info", "打野的你哪去了?");
        list.add(map2);

        return list;

    }


}

做出来的效果是:
这里写图片描述

**BaseAdapter
BaseAdapter使用
//1.创建一个布局文件,给Item的控件进行布局
//2.在对应的Activity中添加ListView控件
//3.声明属性并进行初始化
//4.创建一个类,继承自BaseAdapter
“`

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 java.util.List;

import bean.News;

/**
* Created by user on 2016/7/6.
*/
public class MyAdapter extends BaseAdapter {
//声明属性,保存数据和上下文对象
private List list;
private Context context;

public MyAdapter(Context context, List<News> list) {
    this.context = context;
    this.list = list;
}

public int getCount() {
    return list.size();
}

@Override
public Object getItem(int i) {
    return list.get(i);
}

@Override
//获取Item对应的ID
public long getItemId(int i) {
    return i;
}

@Override
//获取position对应的视图
public View getView(int i, View view, ViewGroup viewGroup) {
   /*
    -------------优化前-------------
   //去获取指定的layout文件中指定id控件
    view = LayoutInflater.from(context).inflate(R.layout.item_layout, null);
    ImageView image = (ImageView) view.findViewById(R.id.image);
    TextView title = (TextView) view.findViewById(R.id.text1);
    TextView infoView = (TextView) view.findViewById(R.id.text2);

    //拿到数据
    News news = (News) getItem(i);

    //根据数据对界面进行赋值
    image.setBackgroundResource(news.getImg());
    title.setText(news.getTitle());
    infoView.setText(news.getInfo());
    return view;
    */


    //优化后的方式
    //利用缓存
    ViewHolder holder;
    if (view == null) {
        //将指定的布局文件转换成视图对象

        //这里是缓存的界面控件
        view = View.inflate(context, R.layout.item_layout, null);
        holder = new ViewHolder();
        holder.imageView = (ImageView) view.findViewById(R.id.image);
        holder.textView = (TextView) view.findViewById(R.id.text1);
        holder.InfoView = (TextView) view.findViewById(R.id.text2);

        view.setTag(holder);

    } else {
        holder = (ViewHolder) view.getTag();
    }
    News news = (News) getItem(i);
    holder.imageView.setBackgroundResource(news.getImg());
    holder.textView.setText(news.getTitle().toString());
    holder.InfoView.setText(news.getInfo().toString());
    return view;
}

}


   //5.创建Adapter并进行绑定
   ```


import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ListView;

import java.util.ArrayList;
import java.util.List;

import bean.News;

public class MainActivity extends AppCompatActivity {

    //BaseAdapter使用
    //1.创建一个布局文件,给Item的控件进行布局
    //2.在对应的Activity中添加ListView控件
    //3.声明属性并进行初始化
    //4.创建一个类,继承自BaseAdapter;
    //5.创建Adapter并进行绑定

    private ListView mListView;

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mListView = (ListView) findViewById(R.id.lv);

         //5.创建Adapter并进行绑定
        MyAdapter adapter = new MyAdapter(this,getData());
        //将ListView和Adapter进行绑定
        mListView.setAdapter(adapter);
    }

    private List<News> getData(){
        List<News> list = new ArrayList<>();

        News new1 = new News(R.drawable.lm,"美女","这个看脸的世界");
        list.add(new1);
        News new2 = new News(R.drawable.cc,"雪山","雪的世界");
        list.add(new2);
        News new3 = new News(R.drawable.dd,"南极","企鹅的世界");
        list.add(new3);

        News new4 = new News(R.drawable.lm,"美女","这个看脸的世界");
        list.add(new4);
        News new5 = new News(R.drawable.cc,"雪山","雪的世界");
        list.add(new5);
        News new6 = new News(R.drawable.dd,"南极","企鹅的世界");
        list.add(new6);

        News new7 = new News(R.drawable.lm,"美女","这个看脸的世界");
        list.add(new7);
        News new8 = new News(R.drawable.cc,"雪山","雪的世界");
        list.add(new8);
        News new9 = new News(R.drawable.dd,"南极","企鹅的世界");
        list.add(new9);
        return  list;
    }
}

运行出来的效果是:
这里写图片描述

就像是这个似的!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值