安卓listView的使用

简单使用

  • 布局文件
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    tools:layout_editor_absoluteY="81dp">

    <ListView
        android:id="@+id/lv"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fastScrollEnabled="true" />
</android.support.constraint.ConstraintLayout>
  • 声明adapter
package com.example.administrator.logincase;

import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.EditText;

public class myAdapter extends BaseAdapter {
    private Context context;

    public myAdapter(Context pContext) {
        context = pContext;
    }

    @Override
    public int getCount() {
        return 100000;
    }

    @Override
    public Object getItem(int position) {
        return null;
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        EditText editor;
        if (convertView == null) {
            editor = new EditText(context);
        } else {
            editor = (EditText) convertView;
        }
        editor.setText("haha" + position);
        return editor;
    }
}
  • 应用adapter
package com.example.administrator.logincase;

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

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ListView lv = findViewById(R.id.lv);
        lv.setAdapter(new myAdapter(this));
    }

}

复杂使用方法

  • 编写item的布局
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ImageView
        android:id="@+id/iv_image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@mipmap/ic_launcher" />

    <TextView
        android:id="@+id/tv_title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="3dp"
        android:layout_toRightOf="@+id/iv_image"
        android:ellipsize="end"
        android:singleLine="true"
        android:text="这是一个测试的程序这是一个测试的程序这是一个测试的程序这是一个测试的程序"
        android:textColor="#000000"
        android:textSize="20sp" />

    <TextView
        android:id="@+id/tv_message"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/tv_title"
        android:layout_marginTop="10dp"
        android:layout_toRightOf="@+id/iv_image"
        android:ellipsize="end"
        android:singleLine="true"
        android:text="这是一个测试的程序这是一个测试的程序这是一个测试的程序这是一个测试的程序"
        android:textColor="#999999"
        android:textSize="15sp" />
</RelativeLayout>
  • 根据布局文件生成view
package com.example.administrator.logincase;

import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.EditText;

public class myAdapter extends BaseAdapter {
    private Context context;

    public myAdapter(Context pContext) {
        context = pContext;
    }

    @Override
    public int getCount() {
        return 100000;
    }

    @Override
    public Object getItem(int position) {
        return null;
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View view;
        if (convertView == null) {
            /**
             * 将一个布局文件转换为View
             * */
            view = View.inflate(context, R.layout.item, null);
        } else {
            view = convertView;
        }
        return view;
    }
}
  • 效果
    这里写图片描述

根据布局文件生成View的方法

  • View.inflate
view = View.inflate(context, R.layout.item, null);
  • LayoutInflater
view=LayoutInflater.from(context).inflate(R.layout.item,null);
  • getSystemService
LayoutInflater inflater= (LayoutInflater)
                    context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            view =inflater.inflate(R.layout.item,null);

simpleAdapter的使用

package com.example.administrator.logincase;

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

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

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
//        ListView lv = findViewById(R.id.lv);
//        lv.setAdapter(new myAdapter(this));
        simpleAdapterTest();
    }

    private void simpleAdapterTest() {
        Map<String, String> map1 = new HashMap<String, String>();
        map1.put("name", "我爱罗");
        map1.put("phone", "12898989");
        Map<String, String> map2 = new HashMap<String, String>();
        map2.put("name", "大蛇丸");
        map2.put("phone", "13584");
        Map<String, String> map3 = new HashMap<String, String>();
        map3.put("name", "鸣人");
        map3.put("phone", "456123");
        Map<String, String> map4 = new HashMap<String, String>();
        map4.put("name", "佐助");
        map4.put("phone", "98656");
        Map<String, String> map5 = new HashMap<String, String>();
        map5.put("name", "雏田");
        map5.put("phone", "756656");
        List<Map<String, String>> list = new ArrayList<Map<String, String>>();
        list.add(map1);
        list.add(map2);
        list.add(map3);
        list.add(map4);
        list.add(map5);
        /*
        * 该类主要是把数据集合直接映射到view当中        
        * from 是一个键值的数组
        * to 是控件的ID值
        * */
        SimpleAdapter adapter = new SimpleAdapter(this, list, R.layout.item,
                new String[]{"name", "phone"}, new int[]{R.id.tv_name,R.id.tv_Phone});
        ListView lv = findViewById(R.id.lv);
        lv.setAdapter(adapter);
    }

}

猜你喜欢

转载自blog.csdn.net/kebiaoy/article/details/81072340