Android小知識——一個界面有多個listView

首先,你有多少個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;

}

}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章