ListView的使用

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);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值