开发我的第一个应用程序我试图在列表视图中添加部分到我的元素。所有项目都有一个日期,我希望每次更改日期时都返回一个包含日期的简单布局。在我的适配器,我有以下:无法从适配器中的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