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>
<?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); } }
相关文章推荐
- IOS支付宝开发SDK的集成
- CI框架 -- 驱动器
- swift学习笔记之-属性
- 【叶子函数分享五十四】汉字转拼音函数 [转]
- hdu 2524 矩形a+b
- 记录了一个关于smack 的bug,接收到xml但是监听无响应
- ThinkPHP整合微信支付之Native 扫码支付 模式一
- Maven 教程
- mysql sql语句为表批量怎加字段
- sql null
- AdaBoost利用haar-like特征做人脸识别(2)
- 兔子--Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK
- iOS:控制器间的数据传递
- EventBus 使用详解(一)——初步使用 EventBus
- solr schema.xml FieldType属性详解
- 在Xcode中使用Git进行源码版本控制
- 8 Things Every Person Should Do Before 8 A.M.
- 【STL相关】hdu 1027 Ignatius and the Princess II【STL】
- Java中的对象和对象引用实例浅析
- 测试windows live writer功能