您的位置:首页 > 其它

ListView的使用

2016-01-25 13:36 316 查看
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,并实现相应的抽象方法

<
4000
/p>
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);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: