【android開發】 listview下拉
轉載請註明:http://write.blog.csdn.net/postedit/50480522
最近做了一個android的listView下拉,可以動態的添加,有點類似於百思不得姐界面風格。下面就介紹下該項目。
運行效果如下:
第一步:主界面
首先是需要建立一個android工程,將添加listView主界面,及添加listview
<RelativeLayout 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" tools:context=".MainActivity" > <ListView android:id="@+id/list" android:layout_width="fill_parent" android:layout_height="fill_parent"></ListView> </RelativeLayout>第二步:創建子模板
如上圖所示,可根據自己的需要更改,但參數也需要更改。
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:background="#FFF" android:layout_marginBottom="20dp" android:layout_width="match_parent" android:layout_height="wrap_content"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <ImageView android:id="@+id/user_image" android:layout_width="50dp" android:layout_margin="5dp" android:layout_height="50dp" android:src="@drawable/ic_launcher"/> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:layout_margin="5dp"> <TextView android:id="@+id/user_id" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginBottom="5dp" android:text="系統只帶" android:textSize="16dp"/> <TextView android:id="@+id/user_time" android:textSize="10dp" android:text="時間:2015年12月31日 16:44:22" android:textColor="#999" android:layout_height="wrap_content" android:layout_width="wrap_content"/> </LinearLayout> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_launcher" android:layout_marginLeft="-50dp"/> </LinearLayout> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="這是一個測試..." android:layout_margin="5dp"/> <ImageView android:id="@+id/list_image" android:layout_width="match_parent" android:layout_height="150dp" android:src="@drawable/ic_launcher" android:background="#999"/> <LinearLayout android:layout_width="match_parent" android:layout_height="35dp" android:orientation="horizontal" android:gravity="right" > <TextView android:id="@+id/user_like" android:layout_width="wrap_content" android:layout_height="match_parent" android:text="12" android:background="@drawable/ic_launcher" android:gravity="center" android:textSize="12dp"/> <TextView android:id="@+id/user_ping" android:layout_width="wrap_content" android:layout_height="match_parent" android:text="12" android:background="@drawable/ic_launcher" android:gravity="center" android:textSize="12dp"/> <TextView android:id="@+id/user_zan" android:layout_width="wrap_content" android:layout_height="match_parent" android:text="12" android:background="@drawable/ic_launcher" android:gravity="center" android:textSize="12dp"/> <TextView android:id="@+id/user_fen" android:layout_width="wrap_content" android:layout_height="match_parent" android:text="121" android:background="@drawable/ic_launcher" android:gravity="center" android:textSize="12dp"/> </LinearLayout> </LinearLayout>第三步:獲取主界面並獲取動態元素
項目新建時就會默認獲取主界面,這個就不用說了,我們要做的事就是獲取動態的元素,並將元素傳遞給子模板進行添加,而支模本又屬於主界面ListView,所以就需要敘寫方法,自定義listView 的方法就3種 ,這裏用的是BaseAdapter,主界面用setAdapter()添加子界面。
動態參數的獲取,這就自定義添加了,需要說明的是,數組保存需要保存在二維數組,或多維數組中,以便於讀取,List<Map> list
動態數據添加:
public List<Map<String, Object>> getData(){ List<Map<String, Object>> list=new ArrayList<Map<String,Object>>(); for (int i = 0; i < 10; i++) { Map<String, Object> map=new HashMap<String, Object>(); map.put("UImage", R.drawable.ic_launcher); map.put("UId", "名稱"+i); map.put("UTime", "時間:2015年12月31日 16:44:2"+i); map.put("LImage",R.drawable.ic_launcher); map.put("ULike",""+200+i*21); map.put("UPing",""+i*100); map.put("UZan",""+i*300+139); map.put("UFen",""+100*i); list.add(map); } return list; }子模板數據添加與模塊添加:
listView=(ListView)findViewById(R.id.list); List<Map<String, Object>> list=getData(); listView.setAdapter(new MyAdspter(this, list));第四步:子模板數據添加
package com.test.android_listview03; import java.util.List; import java.util.Map; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.Button; import android.widget.ImageView; import android.widget.TextView; public class MyAdspter extends BaseAdapter { private List<Map<String, Object>> data; private LayoutInflater layoutInflater; private Context context; public MyAdspter(Context context,List<Map<String, Object>> data){ this.context=context; this.data=data; this.layoutInflater=LayoutInflater.from(context); } /** * 組件集合,對應list.xml中的控件 * @author Administrator */ public final class Zujian{ public ImageView UserImage; public ImageView ListImage; public TextView UserLike; public TextView UserPing; public TextView UserZan; public TextView UserFen; public TextView UserId; public TextView UserTime; } @Override public int getCount() { return data.size(); } /** * 獲得某一位置的數據 */ @Override public Object getItem(int position) { return data.get(position); } /** * 獲得唯一標識 */ @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { Zujian zujian=null; if(convertView==null){ zujian=new Zujian(); //獲得組件,實例化組件 convertView=layoutInflater.inflate(R.layout.ass, null); zujian.UserId = (TextView) convertView.findViewById(R.id.user_id); zujian.UserTime = (TextView) convertView.findViewById(R.id.user_time); zujian.UserImage = (ImageView) convertView.findViewById(R.id.user_image); zujian.ListImage = (ImageView) convertView.findViewById(R.id.list_image); zujian.UserLike = (TextView) convertView.findViewById(R.id.user_like); zujian.UserPing = (TextView) convertView.findViewById(R.id.user_ping); zujian.UserZan = (TextView) convertView.findViewById(R.id.user_zan); zujian.UserFen = (TextView) convertView.findViewById(R.id.user_fen); convertView.setTag(zujian); }else{ zujian=(Zujian)convertView.getTag(); } //綁定數據 zujian.UserId.setText((String)data.get(position).get("UId")); zujian.UserTime.setText((String) data.get(position).get("UTime")); zujian.UserImage.setImageResource((Integer) data.get(position).get("UImage")); zujian.ListImage.setImageResource((Integer) data.get(position).get("LImage")); zujian.UserLike.setText((String) data.get(position).get("ULike")); zujian.UserPing.setText((String) data.get(position).get("UPing")); zujian.UserZan.setText((String) data.get(position).get("UZan")); zujian.UserFen.setText((String) data.get(position).get("UFen")); //zujian.UserLike.setImageResource(()); return convertView; } }第五步:配置文件
這裏就不說了,默認就行。
小弟android不是很懂,自學的,估計會說錯了,語言也不好表示,忘見諒,不過大致就是這樣。