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