【android开发】 listview下拉

【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不是很懂,自学的,估计会说错了,语言也不好表示,忘见谅,不过大致就是这样。


源码下载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值