android列表框配合BaseAdapter实现列表

来源:互联网 发布:恢复以前手机淘宝 编辑:程序博客网 时间:2024/06/11 12:37

android列表框配合BaseAdapter实现列表

在进行列表框的设计时,可能遇到各种各样的情况,这时候仅仅使用BaseAdapter可能还不够,所以就需要自定义一个adpater。下面就介绍一下自定义adapter。
注意在返回view 的时候推荐使用第二种方法。
布局文件:
<?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:background="#eee"    tools:context="com.example.wuxueyou.myfirstandroidapplication.MainActivity">    <ListView        android:id="@+id/list1"        android:layout_width="match_parent"        android:layout_height="200dp"></ListView>    <ListView        android:id="@+id/list2"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_below="@+id/list1"        android:layout_marginTop="50dp"></ListView></RelativeLayout>

Simple_item.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:orientation="horizontal">    <ImageView        android:id="@+id/header"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:paddingLeft="10dp" />    <LinearLayout        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:orientation="vertical">        <TextView            android:id="@+id/name"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:paddingLeft="10dp"            android:textColor="#f0f"            android:textSize="20dp" />        <TextView            android:id="@+id/desc"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:paddingLeft="10dp"            android:textSize="10dp" />    </LinearLayout></LinearLayout>

package com.example.wuxueyou.myfirstandroidapplication;import android.graphics.Color;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.util.Log;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.AdapterView;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.ListView;import android.widget.TextView;public class MainActivity extends AppCompatActivity {    private static final String TAG = "MainActivity";    private ListView listView;    private ListView listView2;    private String[] names =new String[]{            "张三","李四","王五",            "张三","李四","王五",            "张三","李四","王五",            "张三","李四","王五",            "张三","李四","王五",            "张三","李四","王五"    };    private String[] descs = new String[]{            "学生一个","老师一个","校长一个",            "学生一个","老师一个","校长一个",            "学生一个","老师一个","校长一个",            "学生一个","老师一个","校长一个",            "学生一个","老师一个","校长一个",            "学生一个","老师一个","校长一个"    };    private int[] imgs = new int[]{            R.drawable.p1,R.drawable.p2,R.drawable.p3,            R.drawable.p1,R.drawable.p2,R.drawable.p3,            R.drawable.p1,R.drawable.p2,R.drawable.p3,            R.drawable.p1,R.drawable.p2,R.drawable.p3,            R.drawable.p1,R.drawable.p2,R.drawable.p3,            R.drawable.p1,R.drawable.p2,R.drawable.p3    };    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        listView = (ListView) this.findViewById(R.id.list1);        listView2 = (ListView) this.findViewById(R.id.list2);        BaseAdapter baseAdapter = new BaseAdapter() {            @Override            public int getCount() {                return 40;            }            @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                LinearLayout linearLayout = new LinearLayout(MainActivity.this);                linearLayout.setOrientation(LinearLayout.HORIZONTAL);                //imageview 放在linearLayout中                ImageView imageView = new ImageView(MainActivity.this);                imageView.setImageResource(R.drawable.p2);                imageView.setPadding(30, 0, 50, 0);                //textview放在subLinearLayout中                TextView textView = new TextView(MainActivity.this);                textView.setText("这是" + position + "列表项");                textView.setTextSize(20);                textView.setTextColor(Color.BLUE);                textView.setPadding(0, 10, 0, 0);                //bottomTextView放在subLinearLayout中                TextView bottomTextView = new TextView(MainActivity.this);                bottomTextView.setText("详细内容" + position);                bottomTextView.setTextColor(Color.GRAY);                bottomTextView.setTextSize(15);                bottomTextView.setPadding(0, 20, 0, 0);                //subLinearLayout放在linearLayout中                LinearLayout subLinearLayout = new LinearLayout(MainActivity.this);                subLinearLayout.setOrientation(LinearLayout.VERTICAL);                subLinearLayout.addView(textView);                subLinearLayout.addView(bottomTextView);                linearLayout.addView(imageView);                linearLayout.addView(subLinearLayout);                return linearLayout;            }        };        listView.setAdapter(baseAdapter);        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {            @Override            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {                Log.i(TAG, "list-->" + position);            }        });        BaseAdapter baseAdapter2 = new BaseAdapter() {            @Override            public int getCount() {                return names.length;            }            @Override            public Object getItem(int position) {                return names[position];            }            @Override            public long getItemId(int position) {                return position;            }            @Override            public View getView(int position, View convertView, ViewGroup parent) {                View view = LayoutInflater.from(MainActivity.this).inflate(R.layout.simple_item, null);                TextView name = (TextView) view.findViewById(R.id.name);                TextView desc = (TextView) view.findViewById(R.id.desc);                ImageView header = (ImageView) view.findViewById(R.id.header);                name.setText(names[position]);                desc.setText(descs[position]);                header.setImageResource(imgs[position]);                return view;            }        };        listView2.setAdapter(baseAdapter2);        listView2.setOnItemClickListener(new AdapterView.OnItemClickListener() {            @Override            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {                Log.i(TAG,"list2-->" + position);            }        });    }}

运行效果:


0 0
原创粉丝点击