您的位置:首页 > 移动开发 > Android开发

【android开发】ListView下拉

2016-01-08 09:51 633 查看
【android开发】ListView下拉

转载请注明:http://blog.csdn.net/toodan/article/details/50480645

源码下载:http://download.csdn.net/detail/toodan/9395470

最近写了一个listView下拉效果,有点类似于百思不得姐的效果界面,主要采用的方法就是定义一个ListView下拉列表,在定义子模块的模板,通过

List<Map<String, Object>> list将所有信息获取并传输至BaseAdapte属性方法,用get()获取值。

运行效果如下:



方法如下:

第一步:定义ListView

新建一个android工程,并新建一个XML文件,该文件作为主界面,所以要添加listview控件

<ListView
android:id="@+id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"></ListView>

第二步:编译子模块界面

如图模板格式,需要根据自己的变化排版,可更改

<?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>

第三步:获取界面并获取元素信息

新建工程后就会默认获取主界面,这里我们只需要获取动态的参数,将参数传递给myAdapter函数,为什么要传递?因为要自定义ListView的格式,而自定义无非就3种方法,这里采用的BaseAdapter,而在myAdapter中就是叙写BaseAdapter的方法的。

界面获取就不说了,动态添加,就是自定义吧,将元素保存在List<Map<String, Object>> 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;
}

BaseAdapter传递

List<Map<String, Object>> list=getData();
listView.setAdapter(new MyAdspter(this, list));

第四步:

MyAdapter函数处理,就是将所动态添加保存到List<Map<String, Object>> 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不是很熟,语言估计没有那么表达意思,搞不好还说错了,忘见谅啊。

源码下载
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: