【发布时间】:2011-11-08 06:50:56
【问题描述】:
我想构建一个列表视图,显示玩家在游戏中获得的“奖励”。
有很多关于如何显示带有文本 + 图标的列表视图的示例。 但是,就我而言,我需要更改图标。
如果奖励是一次性成就。在这种情况下,我只希望出现文本和“奖杯”。 在其他情况下,它因做某事指定的次数而被授予。 在这种情况下,我需要包含一个进度条。
如何在一个列表视图中进行不同的布局?
更新:
感谢 Leyths,它正在工作(有点)。 问题是 ProgressBar 没有显示 - 只是它的微调器。
这是行:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView android:id="@+id/tvwShortMessage"
android:typeface="sans"
android:textSize="14sp"
android:textStyle="italic"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<TextView android:id="@+id/tvwLongMessage"
android:typeface="sans"
android:textSize="14sp"
android:textStyle="italic"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/tvwShortMessage"/>
<ProgressBar
android:id="@+id/pgbAwardProgress"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@android:style/Widget.ProgressBar.Small"
android:layout_marginRight="5dp"
android:layout_below="@id/tvwLongMessage"/>
</RelativeLayout>
代码:
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null) {
LayoutInflater vi = (LayoutInflater)AwardsActivity.this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.awards_row, parent, false);
}
AwardItem award = awards.get(position);
ProgressBar pb = (ProgressBar) v.findViewById(R.id.pgbAwardProgress);
if(award.award_type == PROGRESSIVE) {
pb.setVisibility(View.VISIBLE);
pb.setMax(award.requirement);
pb.setProgress(award.current_amount);
} else {
pb.setVisibility(View.GONE);
}
((TextView) v.findViewById(R.id.tvwShortMessage)).
setText(MessageBuilder.buildMessage(AwardsActivity.this, award.award_text,
Integer.valueOf(award.requirement).toString()));
return v;
}
我实际上想要相反的 - 没有微调器的酒吧。
这个问题是由于特殊的显示方式还是我在进度条上做错了什么?
结果屏幕:
【问题讨论】:
-
非常令人困惑....为您的问题提供线框或任何草图。理解起来会更好。
-
如果您只想将进度条显示为图像,那么您可以让您的 xml 包含图像和 TextView 并根据您对每个列表项的要求更改图像。但如果您真的是指进度条,那就真的很难实现了。
标签: android listview progress-bar