(4)Android之路====APK基础入门4(ListView控件)

本次来说一下ListView控件的情况:

(一)ListView 概念:
ListView是Android中最重要的组件之一,几乎每个Android应用中都会使用ListView。它以垂直列表的方式列出所需的列表项。
java.lang.Object
   ↳ android.view.View
    ↳ android.view.ViewGroup
      ↳ android.widget.AdapterView
        ↳ android.widget.AbsListView
          ↳ android.widget.ListView

(二)ListView的两个职责:
将数据填充到布局:
处理用户的选择点击等操作。
(三)列表的显示需要三个元素:
1.ListVeiw:用来展示列表的View;
2.适配器:用来把数据映射到ListView上的中介;
3.数据源:具体的将被映射的字符串,图片,或者基本组件。
(四)什么是适配器?
适配器是一个连接数据和AdapterView的桥梁,通过它能有效地实现数据与AdapterView的分离设置,使AdapterView与数据的绑定更加简便,修改更加方便。将数据源的数据适配到ListView中的常用适配器有:ArrayAdapter、SimpleAdapter和SimpleCursorAdapter。
ArrayAdapter最为简单,只能展示一行字;
SimpleAdapter有最好的扩充性,可以自定义各种各样的布局,除了文本外,还可以放ImageView(图片)、Button(按钮)、CheckBox(复选框)等等;
BaseAdapter通用数据适配器,可以自定义自己想要的风格,常见的用于比如手机淘宝,美团那种商品界面等;

ArrayAdapter简单实现代码:

package com.xshark.hello.juno6;

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

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

public class MainActivity extends AppCompatActivity {
    private List<String> list = null;
    private static int i;

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

        init_data();
//        // 系统预置Item风格
//        final ArrayAdapter<String> adapter = new ArrayAdapter<String> (this, android.R.layout.simple_expandable_list_item_1, list);
        // 自定义item风格
        final ArrayAdapter<String> adapter = new ArrayAdapter<String> (this, R.layout.item, list);
        ListView lv1 = (ListView) findViewById(R.id.lv1);
        lv1.setAdapter(adapter);

        Button button = (Button) findViewById(R.id.btn_1);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                list.add("Button item " + i++);
                if(i < 10000) {
                    adapter.notifyDataSetChanged();
                } else {
                    i = 0;
                }
            }
        } );
    }

    private void init_data() {
        list = new ArrayList<String>();

        for (int i = 0; i < 3; i++) {
            list.add("item " + i);
        }
    }
}

BaseAdapter示例程序:

Good.java
package com.xshark.hello.juno7;

public class Good {
    private int imgId = 0;
    private String name = null;
    private int price = 0;
    private int count = 0;

    public Good(int imgId, String name, int price) {
        this.imgId = imgId;
        this.name = name;
        this.price = price;
        this.count = 0;
    }

    public int getImgId() {
        return imgId;
    }

    public void setImgId(int imgId) {
        this.imgId = imgId;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getPrice() {
        return price;
    }

    public void setPrice(int price) {
        this.price = price;
    }

    public int getCount() {
        return count;
    }

    public void setCount(int count) {
        this.count = count;
    }
}
LayoutActivity.java
package com.xshark.hello.juno7;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;

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

public class LayoutActivity extends AppCompatActivity {
    private List<Good> goods = new ArrayList<Good>();
    private GoodAdapter adapter3 = null;

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

        initData3();
        adapter3 = new GoodAdapter();
        ListView lv3 = (ListView) findViewById(R.id.listview3);
        lv3.setAdapter(adapter3);
    }

    private void initData3() {
        Good good1 = new Good(R.mipmap.tulips, "衬衫", 100);
        Good good2 = new Good(R.mipmap.lighthouse, "鞋子", 130);
        Good good3 = new Good(R.mipmap.penguins, "包包", 200);
        goods.add(good1);
        goods.add(good2);
        goods.add(good3);
    }

    private class GoodAdapter extends BaseAdapter {
        private TextView tv_co
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值