ListView的使用

来源:互联网 发布:js 模块化编程 入门 编辑:程序博客网 时间:2024/06/08 16:01

1.定义每个列表项item_layout.xml

<?xml version="1.0" encoding="utf-8"?><AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:background="#f4ffd9"    android:layout_width="match_parent"    android:layout_height="match_parent">    <Button        android:layout_width="72dp"        android:layout_height="29dp"        android:text="标题"        android:textSize="20sp"        android:id="@+id/buttonLook"        android:layout_x="38dp"        android:background="@drawable/btton_bg"        android:layout_y="167dp" />    <TextView        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:textAppearance="?android:attr/textAppearanceMedium"        android:text="Medium Text"        android:id="@+id/textViewItemData"        android:layout_x="169dp"        android:layout_y="25dp"        android:textSize="20dp" />    <TextView        android:layout_width="150dp"        android:layout_height="wrap_content"        android:textAppearance="?android:attr/textAppearanceMedium"        android:text="Medium Text"        android:id="@+id/textViewDecription"        android:layout_x="169dp"        android:layout_y="62dp"        android:lines="4"        android:ellipsize="end" />    <ImageView        android:layout_width="150dp"        android:layout_height="140dp"        android:adjustViewBounds="true"        android:maxWidth="150dp"        android:maxHeight="150dp"        android:id="@+id/imageViewPicture"        android:layout_x="5dp"        android:layout_y="18dp"        android:src="@mipmap/f0" /></AbsoluteLayout>
2.包装数据类

package com.gst.thinkpad.helloworld;import java.util.Date;/** * Created by ThinkPad on 2015/9/16. */public class News {    private String title;    private String description;    private String orderInfo;    private Date date;    private String urlPath;    private int imageID;    public int getImageID() {        return imageID;    }    public void setImageID(int imageID) {        this.imageID = imageID;    }    public Date getDate() {        return date;    }    public void setDate(Date date) {        this.date = date;    }    public String getOrderInfo() {        return orderInfo;    }    public void setOrderInfo(String orderInfo) {        this.orderInfo = orderInfo;    }    public String getUrlPath() {        return urlPath;    }    public void setUrlPath(String urlPath) {        this.urlPath = urlPath;    }    public String getDescription() {        return description;    }    public void setDescription(String description) {        this.description = description;    }    public String getTitle() {        return title;    }    public void setTitle(String title) {        this.title = title;    }}

3.继承BaseAdapter,并实现相应的抽象方法

package com.gst.thinkpad.helloworld;import android.content.Context;import android.content.Intent;import android.graphics.Bitmap;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.webkit.WebView;import android.widget.BaseAdapter;import android.widget.Button;import android.widget.ImageView;import android.widget.TextView;import com.android.volley.RequestQueue;import com.android.volley.Response;import com.android.volley.VolleyError;import com.android.volley.toolbox.ImageRequest;import com.android.volley.toolbox.Volley;import java.util.List;/** * Created by ThinkPad on 2015/9/22. */public class ListAdapter extends BaseAdapter{    private Context mContext;    private List<News> mListData;    private RequestQueue mQueue;    public ListAdapter(Context mContext, List<News> mListData) {        this.mContext = mContext;        this.mListData = mListData;        this.mQueue= Volley.newRequestQueue(mContext);    }    @Override    public int getCount() {        return mListData.size();    }    @Override    public Object getItem(int position) {        return mListData.get(position);    }    @Override    public long getItemId(int position) {        return position;    }    @Override    public View getView(int position, View convertView, ViewGroup parent) {        final News news=mListData.get(position);        final ViewHolder viewHolder;        if (convertView==null){            viewHolder=new ViewHolder();            LayoutInflater inflater=LayoutInflater.from(mContext);            convertView=inflater.inflate(R.layout.item_layout,null);            viewHolder.dataTV=(TextView)convertView.findViewById(R.id.textViewItemData);            viewHolder.descriptionTV=(TextView)convertView.findViewById(R.id.textViewDecription);            viewHolder.lookBT=(Button)convertView.findViewById(R.id.buttonLook);            viewHolder.imageIV=(ImageView)convertView.findViewById(R.id.imageViewPicture);            convertView.setTag(viewHolder);        }else {            viewHolder=(ViewHolder)convertView.getTag();        }        viewHolder.dataTV.setText(news.getTitle());        viewHolder.descriptionTV.setText(news.getDescription());        viewHolder.lookBT.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                Intent intent = new Intent(mContext, WebActivity.class);                intent.putExtra("web_url", news.getUrlPath());                mContext.startActivity(intent);            }        });        viewHolder.imageIV.setImageResource(news.getImageID());        //创建图片请求        ImageRequest imageRequest=new ImageRequest(                "http://img4.douban.com/view/photo/photo/public/p2266866059.jpg",                new Response.Listener<Bitmap>() {                    @Override                    public void onResponse(Bitmap bitmap) {                       viewHolder.imageIV.setImageBitmap(bitmap);                    }                }, 0, 0, Bitmap.Config.RGB_565, new Response.ErrorListener() {            @Override            public void onErrorResponse(VolleyError volleyError) {                viewHolder.imageIV.setImageBitmap(null);            }        }        );        //加入请求队列        mQueue.add(imageRequest);        return convertView;    }    class ViewHolder{        TextView dataTV;        TextView descriptionTV;        Button lookBT;        ImageView imageIV;    }}
3.在主工程中准备数据,并绑定listview
package com.gst.thinkpad.helloworld;import android.app.Activity;import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;import android.widget.ArrayAdapter;import android.widget.ListView;import java.util.ArrayList;import java.util.List;public class ListViewActivity extends Activity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_list_view);        //标题列表        String[] titles=new String[]{"黄金月饼",                "创意月饼",                "奶黄月饼",                "水晶月饼",                "紫薯冰皮月饼",                "芝麻月饼",                "鲜肉月饼",                "火腿月饼",                "梦幻冰皮月饼",                "红曲绿豆千层酥月饼"        };        //图片列表      /*  int[] imageID=new int[]{R.mipmap.黄金月饼,R.mipmap.创意月饼,R.mipmap.奶黄月饼,                R.mipmap.水晶月饼,R.mipmap.紫薯冰皮月饼,R.mipmap.芝麻月饼,R.mipmap.鲜肉月饼                ,R.mipmap.火腿月饼,R.mipmap.梦幻冰皮月饼,R.mipmap.红曲绿豆千层酥月饼};*/        //网址列表        String[] urls=new String[]{"http://www.meishij.net/zuofa/huangjinyuebing_2.html",                                    "http://www.meishij.net/zuofa/chuangyiyuebing.html",                                    "http://www.meishij.net/zuofa/naihuangyuebing_4.html" ,                                    "http://www.meishij.net/zuofa/shuijingyuebing_3.html" ,                                    "http://www.meishij.net/zuofa/zishubingpiyuebing_5.html" ,                                    "http://www.meishij.net/zuofa/zhimayuebing.html" ,                                    "http://www.meishij.net/zuofa/xianrouyuebing_6.html" ,                                    "http://www.meishij.net/zuofa/huotuiyuebing_1.html" ,                                    "http://www.meishij.net/zuofa/menghuanbingpiyuebing.html" ,                                    "http://www.meishij.net/zuofa/hongqulvdouqiancengsuyuebing.html" ,                                  };        String[] descriptions=new String[]{"黄金月饼制作是健康的。最基础的工艺就是蒸。零厨艺的人也一下搞定的。我是根据家人的口味、营养、喜欢的食材来、\n" +                "选取做什么味道的月饼。",                "中秋节快到了,我想着用我自己的方法去做月饼",                "一直想做奶黄月饼,只是因为有一包吉士粉。一直想着怎么把它解决掉,这下可好,一下子去掉一半。",                "水晶月饼,亮晶晶的,冰清玉洁,讨人喜欢!水晶月饼,Q弹的口感,可爱的造型,讨小孩欢心!水晶月饼没有烤箱也能做的,\n" +                        "是忙碌妈妈的最佳选择,只需要花一点点时间,百分百能做成功的月饼!",                "月饼季\n" +                        "你懂的\n" +                        "好吃健康 低热量\n" +                        "应景的月饼做起........",                "喜欢吃月饼,但是没有转化糖浆和枧水,所以迟迟不敢动手,直到有一天无意中拿起孩子的“综合实践活动”书,\n" +                        "还真有月饼的制作方法,里面用到的是白糖浆和碱水,我把原方改变了一下,直接用白糖,\n" +                        "加了酵母和碱,自我感觉还不错······",                "有了烤箱之后,就是尝试做各种吃的来,快中秋了,就做个月饼大家尝尝吧。\n",                "不经意间做了个苏式月饼的火腿馅,又不能做苏式月饼,怎么办呢?给改良改良勉强做成广式月饼吧。",                "晶莹剔透的冰皮,五颜六色的样式,清甜沁心的果酱馅料,冰凉软糯的口感。一提起冰皮月饼,可能你会多多少少想到以上这些形容词。\n",                "今年的月饼我自己做了好多种,真的做伤了,今天上传个红曲绿豆千层酥小月饼。今年的月饼到今天为止算告一段落了,\n" +                        "完美收关。哈哈,很喜欢这种一层一层的酥月饼,加了点红曲粉,变得粉嫩了,好漂亮的颜色,为节日增添些色彩吧。\n" +                        "这次用了去皮绿豆沙馅,很软糯好吃。"        };        ListView listView=(ListView)findViewById(R.id.listView);        List<News> list=new ArrayList<News>();        for(int i=0;i<10;i++){            News news=new News();            news.setTitle(titles[i]);            news.setDescription(descriptions[i]);         //   news.setImageID(imageID[i]);            news.setUrlPath(urls[i]);           list.add(news);        }        //通过ArrayAdapter实现数据绑定//        ArrayAdapter<String> arrayAdapter=new ArrayAdapter<String>(ListViewActivity.this,//                android.R.layout.simple_expandable_list_item_1,list);//        listView.setAdapter(arrayAdapter);        ListAdapter myAdapter=new ListAdapter(list,ListViewActivity.this);        listView.setAdapter(myAdapter);    }    @Override    public boolean onCreateOptionsMenu(Menu menu) {        // Inflate the menu; this adds items to the action bar if it is present.        getMenuInflater().inflate(R.menu.menu_list_view, menu);        return true;    }    @Override    public boolean onOptionsItemSelected(MenuItem item) {        // Handle action bar item clicks here. The action bar will        // automatically handle clicks on the Home/Up button, so long        // as you specify a parent activity in AndroidManifest.xml.        int id = item.getItemId();        //noinspection SimplifiableIfStatement        if (id == R.id.action_settings) {            return true;        }        return super.onOptionsItemSelected(item);    }}

0 0
原创粉丝点击