我正在制作一个显示天气信息的应用程序。为了显示天气,我正在使用nadavfima google cards ui library。但是,当我尝试在卡的布局中设置textviews时,即使在应用程序中刷新后也不会显示。它显示的只是我在xml文件中设置的硬编码值。
mCards = (CardUI) root.findViewById(R.id.nowCards);
mCards.setSwipeable(false);
// add cards
// add overview card
mCards.addCard(new NowOverviewCard());
mCards.addStack(new CardStack());
// add temperature
mCards.addCard(new SimpleTempCard(getActivity()));
mCards.addStack(new CardStack());
// add detailed values
SimpleValueCard pressure = new SimpleValueCard(getActivity());
mCards.addCard(pressure);
mCards.refresh();
布局视图
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="15dp" >
<TextView
android:id="@+id/simpleCardHead"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:fontFamily="sans-serif-thin"
android:text="Humidity"
android:textAppearance="?android:attr/textAppearanceLarge" />
<TextView
android:id="@+id/simpleCardValue"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/simpleCardHead"
android:layout_alignBottom="@+id/simpleCardHead"
android:layout_marginLeft="35dp"
android:layout_toRightOf="@+id/simpleCardHead"
android:fontFamily="sans-serif-thin"
android:text="75%"
android:textAppearance="?android:attr/textAppearanceLarge" />
</RelativeLayout>
我的卡片视图
public class SimpleValueCard extends Card {
View card;
private Context ctx;
public SimpleValueCard( Context ctx) {
this.ctx = ctx;
}
@Override
public View getCardContent(Context context) {
return getViewFromContext(context);
}
@Override
public boolean convert(View convertCardView) {
getViewFromContext(ctx);
TextView header = (TextView) convertCardView
.findViewById(R.id.simpleCardHead);
TextView value = (TextView) convertCardView
.findViewById(R.id.simpleCardValue);
if (header == null || value == null) {
} else {
header.setText("Pressure");
value.setText("84");
}
return true;
}
private View getViewFromContext(Context context) {
LayoutInflater mInflater = (LayoutInflater) context
.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
card = mInflater.inflate(R.layout.card_simple_value, null);
return card;
}
}
答案 0 :(得分:0)
问题是你正在调用getViewFromContext(ctx);返回视图对象,但遗憾的是你没有在转换中使用/保存该视图对象(查看convertCardView)。
所以你需要存储返回的视图对象&amp;然后你应该在你的转换中使用它(查看convertCardView)。它就像自定义listview baseadapter。您需要该视图对象,您可以设置文本视图。因为在这里你正在膨胀但不完全使用那个为了显示静态值的视图对象。
做上述事情,一定会解决你的问题。
参考Android Custom ListView + BaseAdapter