安卓开发之基于ListActivity的LIstView的用法

来源:互联网 发布:windows 10 iso bt 编辑:程序博客网 时间:2024/05/16 19:03

安卓开发中ListView是最常用的,也是最重要的用法之一,作为一个刚刚步入安卓开发之旅的初学者,ListView的熟练运用是必备技能之一。下面是个人学习过程中的一个实例。

package com.example.admin.listviewmodel;import android.app.ListActivity;import android.os.Bundle;//继承ListActivity,直接为其指定adapter即可,// activity继承了ListActivity,那么布局文件里面就一定要实例化一个listview的//并且listview的id attribute必须为 android:id="@android:id/list"public class MainActivity extends ListActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        ListViewAdapter listViewAdapter=new ListViewAdapter(this);//将context传递过去        setListAdapter(listViewAdapter);//指定adapter    }}

<LinearLayout 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:orientation="vertical"   tools:context=".MainActivity">    <ListView        android:id="@android:id/list"
        必须为 android:id="@android:id/list",否则会报错
        android:layout_width="fill_parent"
android:layout_height="wrap_content" > </ListView></LinearLayout>
package com.example.admin.listviewmodel;import android.annotation.TargetApi;import android.content.Context;import android.os.Build;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.ArrayList;import java.util.List;/** * Created by Admin on 2015/9/16. */public class ListViewAdapter extends BaseAdapter {    private Context context;    //下面的getView要用到context    public ListViewAdapter (Context context){        this.context=context;        addMessage();    }    public Context getContext() {        return context;    }    @Override    public int getCount() {        return messageList.size();    }    @Override    public Object getItem(int position) {        return messageList.get(position);    }    @Override    public long getItemId(int position) {      return position;//只要保证唯一性即可,位置就是唯一性的    }    //getView是最重要的    @TargetApi(Build.VERSION_CODES.JELLY_BEAN)    @Override    public View getView(int position, View convertView, ViewGroup parent) {        //避免每一次都获取布局资源消耗较大        ViewHolder v;        if (convertView==null){            convertView= LayoutInflater.from(getContext()).inflate(R.layout.itemlayout,null);            v=new ViewHolder();            v.imageView= (ImageView) convertView.findViewById(R.id.tvimage);            v.textView= (TextView) convertView.findViewById(R.id.tvtext);            convertView.setTag(v);        }else {            v=(ViewHolder)convertView.getTag();        }        Message msg= (Message) getItem(position);        v.getImageView().setBackgroundResource(R.mipmap.ic_launcher);        v.getTextView().setText(msg.getName());        return convertView;    }    List<Message> messageList=new ArrayList<Message>();    public void addMessage(){        for (int i = 0; i <20 ; i++) {            this.messageList.add(i,new Message("---syd--"+i));            notifyDataSetChanged();////数据有改变要更新列表        }    }    public void clear(){        messageList.clear();        notifyDataSetChanged();////数据有改变要更新列表    }    private static class ViewHolder{         private ImageView imageView=null;        private TextView textView=null;        public ImageView getImageView() {            return imageView;        }        public TextView getTextView() {            return textView;        }    }}
package com.example.admin.listviewmodel;import android.graphics.Bitmap;import android.graphics.drawable.Drawable;/** * Created by Admin on 2015/9/16. */public class Message {    private String name;    public Message(String name){        this.name=name;    }    public String getName() {        return name;    }}
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="horizontal" android:layout_width="match_parent"    android:layout_height="wrap_content"    android:padding="20dp">为每条数据之间指定间距    <ImageView        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:id="@+id/tvimage" />    <TextView        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:id="@+id/tvtext"        android:textAppearance="?android:textAppearanceLarge"/></LinearLayout>
运行后的效果:


0 0
原创粉丝点击