Android小知识——一个界面有多个listView

原创 2016年05月30日 11:56:33

首先,你有多少个listview,如果样式不一样就要写不一样的item,在Adapter里面定义一个itemtype类型,给每一个listview都设置一个type,当要调用哪一个item的时候,直接用type判断就可以了。以下就是Adapter里面的代码,仅供参考:

import java.util.Calendar;

import java.util.List;


import com.canxing.android.venus.internships.R;

import com.canxing.android.venus.internships.sign.KCalendar;

import com.canxing.android.venus.internships.sign.KCalendar.OnCalendarDateChangedListener;

import com.canxing.android.venus.internships.utils.GetTimeUtil;


import android.content.Context;

import android.util.Log;

import android.view.LayoutInflater;

import android.view.View;

import android.view.ViewGroup;

import android.view.View.OnClickListener;

import android.widget.BaseAdapter;

import android.widget.TextView;


public class SignAllParentAdapter extends BaseAdapter {

private List<UnitSignInfo>infos;

private ContextmContext;

private LayoutInflaterminflater;

private String[]day;

private Stringsum_SignDays;

private Stringdate= null; // 设置默认选中的日期


public SignAllParentAdapter(List<UnitSignInfo> infos, Context mContext, String[] day, String sum_SignDays) {

this.minflater = LayoutInflater.from(mContext);

this.infos = infos;

this.mContext = mContext;

this.day = day;

this.sum_SignDays = sum_SignDays;

}


@Override

public int getCount() {

// TODO Auto-generated method stub

return infos.size() + 1;

}

public void updateData(List<UnitSignInfo> infos, String[] day, String sum_SignDays) {

this.infos = infos;

this.day = day;

this.sum_SignDays = sum_SignDays;

notifyDataSetChanged();

}

@Override

public int getItemViewType(int position) {

if (position == 0)

return 0;

else

return 1;

}


@Override

public Object getItem(int position) {

return infos.get(position);

}


@Override

public int getViewTypeCount() {

return 2;

}


@Override

public long getItemId(int position) {

return position;

}


ViewHolderTop viewtop = null;


@Override

public View getView(int position, View convertView, ViewGroup parent) {

ViewHolderone view = null;

//ViewHolderTop viewtop = null;

int type = getItemViewType(position);

if (convertView == null) {

switch (type) {

case 0 :

convertView = LayoutInflater.from(mContext).inflate(R.layout.item_parent_top, null);

viewtop = new ViewHolderTop();

viewtop.pre_tv = (TextView) convertView.findViewById(R.id.pre_tv);

viewtop.mouth_tv = (TextView) convertView.findViewById(R.id.mouth_tv);

viewtop.next_tv = (TextView) convertView.findViewById(R.id.next_tv);

viewtop.count_tv = (TextView) convertView.findViewById(R.id.count_tv);

viewtop.signed_tv = (TextView) convertView.findViewById(R.id.signed_tv);

viewtop.popupwindow_calendar = (KCalendar) convertView.findViewById(R.id.popupwindow_calendar);

convertView.setTag(viewtop);

break;

case 1 :

convertView = LayoutInflater.from(mContext).inflate(R.layout.item_sign_listview, null);

view = new ViewHolderone();

view.company_name_tv = (TextView) convertView.findViewById(R.id.company_name_tv);

view.company_time_tv = (TextView) convertView.findViewById(R.id.company_time_tv);


convertView.setTag(view);

break;

}


} else {

switch (type) {

case 0 :

viewtop = (ViewHolderTop) convertView.getTag();

break;

case 1 :

view = (ViewHolderone) convertView.getTag();

break;

}


}

//final ViewHolderTop viewtop2 = viewtop;

// 设置资源

switch (type) {

case 0 :


viewtop.count_tv.setText("总签到" + sum_SignDays + "天");

if (day != null) {

viewtop.mouth_tv.setText(viewtop.popupwindow_calendar.getCalendarYear() + "年" + viewtop.popupwindow_calendar.getCalendarMonth() + "月");


if (null != date) {

int years = Integer.parseInt(date.substring(0, date.indexOf("-")));

int month1 = Integer.parseInt(date.substring(date.indexOf("-") + 1, date.lastIndexOf("-")));

viewtop.mouth_tv.setText(years + "年" + month1 + "月");


viewtop.popupwindow_calendar.showCalendar(years, month1);

viewtop.popupwindow_calendar.setCalendarDayBgColor(date, R.drawable.calendar_date_focused);

}


final Calendar c = Calendar.getInstance();

int year = c.get(Calendar.YEAR);

int month = c.get(Calendar.MONTH) + 1;// 获取当前月份

String monthStr;

if (month < 10) {

monthStr = "0" + month;

} else {

monthStr = month + "";

}

String dateFormat;

for (int i = 0; i < day.length; i++) {

Log.e("###", "days" + day.length + year + monthStr);

if (Integer.parseInt(day[i]) < 10) {

dateFormat = year + "-" + monthStr + "-" + "0" + day[i];

} else {

dateFormat = year + "-" + monthStr + "-" + day[i];

}

Log.e("###%%%", "format:" + dateFormat);

viewtop.popupwindow_calendar.setCalendarDayBgColor(dateFormat, R.drawable.calendar_date_focused);

}

}

// 监听当前月份

viewtop.popupwindow_calendar.setOnCalendarDateChangedListener(new OnCalendarDateChangedListener() {

public void onCalendarDateChanged(int year, int month) {

viewtop.mouth_tv.setText(viewtop.popupwindow_calendar.getCalendarYear() + "年" + viewtop.popupwindow_calendar.getCalendarMonth() + "月");

}

});


// 上月监听按钮


viewtop.pre_tv.setOnClickListener(new OnClickListener() {


public void onClick(View v) {

viewtop.popupwindow_calendar.lastMonth();

}


});

// 下月监听按钮

viewtop.next_tv.setOnClickListener(new OnClickListener() {


public void onClick(View v) {

viewtop.popupwindow_calendar.nextMonth();

}

});


break;

case 1 :

UnitSignInfo info = infos.get(position-1);

view.company_name_tv.setText(info.getCompanyname());

if (info.getEndtime() == null && info.getEndtime() == "") {

String start = GetTimeUtil.getTime(Integer.parseInt(info.getStarttime()));

view.company_time_tv.setText(start + "-今天");

} else {

String start = GetTimeUtil.getTime(Integer.parseInt(info.getStarttime()));

String end = GetTimeUtil.getTime(Integer.parseInt(info.getEndtime()));

view.company_time_tv.setText(start + "-" + end);

}

break;

}


return convertView;

}


static class ViewHolderone {

TextViewcompany_name_tv;

TextViewcompany_time_tv;

}

static class ViewHolderTop {

TextViewpre_tv;

TextViewmouth_tv;

TextViewnext_tv;

TextViewcount_tv;

TextViewsigned_tv;

KCalendarpopupwindow_calendar;

}

}


相关文章推荐

android 一个Activity多个listview

当我们直接在布局文件中写三个listview的时候,会出现三个滚动条,并且每个listview都只显示一个item,要改动才显示更多。怎么做才好了? 办法是有得:用一个ScrollView包...
  • lgx06
  • lgx06
  • 2014年05月06日 17:14
  • 2349

android 一个页面内 多个listview的实现

如果很平常的两个listview组件竖直放在linearLayout布局中,结果是: 两个listview 很独立,中间似乎有个分割线,完全吧他们分离了,各自独立滚动,如果上面的listview把整...
  • Buaaroid
  • Buaaroid
  • 2014年05月29日 10:42
  • 13936

Android 一个ListView添加多个Adapter

有时候我们想在listView上分类,或者呢 有时候一行显示两列内容,有时候需要三列内容 ,那怎么实现呢,这里呢就要使用 Java代码   class Section { Stri...

android 一个页面内 多个listview的实现

如果很平常的两个listview组件竖直放在linearLayout布局中,结果是: 两个listview 很独立,中间似乎有个分割线,完全吧他们分离了,各自独立滚动,如果上面的listview把整...

android 跑马灯效果的基本实现以及自定义实现一个界面多个跑马灯效果

前言:    我相信很多人都在实现过android的跑马灯效果,肯定也有很多人说一个界面不能实现多个跑马灯效果,其实是可以实现的,今天我们就带你实现一下。 跑马灯最简单的代码实现如下:  ...

android 一个ListView显示两种样式,比较简单,比如聊天的界面最常用

/** * @author intbird@163.com * @time 20131227 */ package com.yilake.adapter; import java.ut...
  • intbird
  • intbird
  • 2014年08月01日 17:32
  • 920

[ Android界面实现 ] ZListView,一个最强大的刷新、加载、滑动删除的 ListView 控件(一)

        两个月之前,写过一篇文章【Android界面实现】整合了刷新、加载更多、滑动删除功能的XListview ,介绍了如何整合两个开源项目实现这种功能,但是在实际...

【Android界面实现】ZListView,一个最强大的刷新、加载、滑动删除的ListView控件(二)

     我们接着上篇的文章说,在前一篇文章中,我们学习了ZListView的使用,这一篇就开始说一些干货了,本篇文章将介绍ZListView的实现原理。     其实说是ZL...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android小知识——一个界面有多个listView
举报原因:
原因补充:

(最多只允许输入30个字)