簡體   English   中英

膨脹自定義Android小部件

[英]Inflate custom android widget

我知道有幾十個類似的帖子,但它在我看來一切都是正確的:

自定義小部件:

public class DoubleTextItem extends LinearLayout {

private TextView txtMain;
private TextView txtDescription;

public DoubleTextItem(Context context) {
    super(context);
}
public DoubleTextItem(Context context, AttributeSet attrs) {
    super(context, attrs);
}

@Override
protected void onFinishInflate() {
    super.onFinishInflate();
    ((Activity)getContext()).getLayoutInflater().inflate(R.layout.widget_double_text_item, this);
    setupViewItems();
}

private void setupViewItems() {
    txtMain = (TextView) findViewById(R.id.txtMain);
    txtDescription = (TextView) findViewById(R.id.txtDecription);
}
public void setDescription(String text) {
    txtDescription.setText(text);
}
}

自定義窗口小部件布局xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >

    <TextView
    android:id="@+id/txtMain"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />

    <TextView
    android:id="@+id/txtDecription"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />

</LinearLayout>

在一個活動函數里面我得到一個轉換錯誤,

LayoutInflater inflater = LayoutInflater.from(this);
DoubleTextItem item = (DoubleTextItem) inflater.inflate(R.layout.widget_double_text_item, layout);              
item.setText(som-txt);
item.setDescription("#"+athlete.getString("position"));

這里,根視圖是一個LinearLayout,但您嘗試將其轉換為自定義類:

DoubleTextItem item = (DoubleTextItem) inflater.inflate(R.layout.widget_double_text_item, layout);              

標准建議是:

所有DoubleTextItem都是LinearLayouts,但並非所有LinearLayout都是DoubleTextItems。

意味着你不能將對象從LinearLayout向下轉換為DoubleTextItem,有太多的假設,Java不會讓你這么做。

如果您想在布局中使用DoubleTextItem,則需要使用:

<your.package.name.DoubleTextItem 
    ... />

(另外,在onFinishInflate()里面調用onFinishInflate()似乎有點傻,特別是因為你沒有保存膨脹的項目......如果你想膨脹不同的布局,不要給第一個膨脹。)


總的來說,您似乎正在嘗試重新創建現已棄用的TwoLineListItem ,也許您可​​以從它的源代碼中學習一些指針(或者只是使用TwoLineListItem。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM