開發我的第一個應用程序我試圖在列表視圖中添加部分到我的元素。所有項目都有一個日期,我希望每次更改日期時都返回一個包含日期的簡單佈局。在我的適配器,我有以下:無法從適配器中的getView返回兩個不同的視圖
return convertView;
添加一個破發點,以該行並試圖一步通過它立即引發了一些:直到我到達最後一行
public View getView(int position, View convertView, ViewGroup parent) {
Match match = matchArrayList.get(position);
Calendar matchTime = match.getDate();
SimpleDateFormat date = new SimpleDateFormat("dd-MM-yyyy");
SimpleDateFormat time = new SimpleDateFormat("HH:mm");
String sDate = date.format(matchTime.getTime());
SeparatorHolder separatorHolder = null;
MatchHolder matchHolder = null;
if (convertView == null) {
if (!sDate.equals(_lastDate)) {
convertView = inflator.inflate(R.layout.date_separator, null);
separatorHolder = new SeparatorHolder();
separatorHolder.Date = (TextView) convertView.findViewById(R.id.date);
convertView.setTag(separatorHolder);
} else {
convertView = inflator.inflate(R.layout.match_layout, null);
matchHolder = new MatchHolder();
matchHolder.Time = (TextView) convertView.findViewById(R.id.time);
matchHolder.HomeTeam = (TextView) convertView.findViewById(R.id.homeTeam);
matchHolder.AwayTeam = (TextView) convertView.findViewById(R.id.awayTeam);
matchHolder.HomeTeamImage = (ImageView) convertView.findViewById(R.id.homeTeamImageView);
matchHolder.AwayTeamImage = (ImageView) convertView.findViewById(R.id.awayTeamImageView);
matchHolder.TournamentImage = (ImageView) convertView.findViewById(R.id.tournamentImageView);
matchHolder.TVChannelImage = (ImageView) convertView.findViewById(R.id.tvChannelImageView);
convertView.setTag(matchHolder);
}
}
else {
if (!sDate.equals(_lastDate))
matchHolder = (MatchHolder) convertView.getTag();
else
separatorHolder = (SeparatorHolder) convertView.getTag();
}
if (!sDate.equals(_lastDate)) {
_lastDate = sDate;
separatorHolder.Date.setText(sDate);
} else {
UrlImageViewHelper.setUrlDrawable(matchHolder.TournamentImage, match.getTournamentImage());
UrlImageViewHelper.setUrlDrawable(matchHolder.HomeTeamImage, match.getHomeTeamImage());
matchHolder.HomeTeam.setText(match.getHomeTeam());
UrlImageViewHelper.setUrlDrawable(matchHolder.AwayTeamImage, match.getAwayTeamImage());
matchHolder.AwayTeam.setText(match.getAwayTeam());
matchHolder.Time.setText(time.format(matchTime.getTime()));
UrlImageViewHelper.setUrlDrawable(matchHolder.TVChannelImage, match.getTVChannelImage());
}
return convertView;
}
一切工作就好了有點錯誤。
現在剛剛成爲Android和Eclipse的新手,我實際上找不到類似於在Visual Studio中編寫.Net時獲得的堆棧跟蹤。我只能看到在Eclipse的Debug透視圖中打開了一個帶有AbsListView.class的選項卡...
任何人都可以對我想實現的目標有所瞭解嗎?也許幫助一下?我看着this link,據我所知,他還根據物品類型返回了兩個不同的視圖: - ?
編輯: 實施波士頓答案的街道,並改變了代碼
@Override
public int getItemViewType(int position) {
Match match = matchArrayList.get(position);
if (match.HomeTeam == "") {
return 0;
}
else {
return 1;
}
}
現在,它的工作原理,但提前在我的名單FC的我的應用程序滾動
感謝
感謝您的超級快速和絕對現貨答案:-)現在它的工作! – CJe 2013-02-28 15:27:38
沒問題:)我有點擔心'_lastDate'。它可能會搞砸了,因爲它使得getItemViewType的返回值不僅取決於'position'的值,而且取決於'_lastDate'的值。如果這與'getView(...)'中發生的情況不完全匹配,您仍可能遇到問題。 – 2013-02-28 15:29:56
只要渲染列表就可以工作,但只要我開始向下滾動,它就會關閉。對此有何想法?它工作得很好,只有一個視圖類型... – CJe 2013-02-28 15:53:39