1

我想填充項目而不使用xml佈局,而是我想在運行時創建視圖。這是我的getView()方法。使用getView()沒有佈局Inflater

public View getView(final int position, View convertView, ViewGroup parent) { 

    EditText v ;  

    if(convertView ==null) 
    { 
     v = new EditText(mContext); 
     convertView = v; 
     convertView.setTag(R.string.edittext_child, v); 

    } 
    else 
    { 
     v = (EditText)convertView.getTag(R.string.edittext_child); 
    } 
    v.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, 80)); 
    v.setBackgroundDrawable(mContext.getResources().getDrawable(R.drawable.custom_edit)); 
    v.setEms(12); 
    v.setInputType(InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS); 
    v.setPadding(10, 0, 5, 0); 
    v.setHint(Ids[position]); 
    return convertView; 
} 

我在返回視圖時出現此錯誤。

java.lang.ClassCastException: android.view.ViewGroup$LayoutParams cannot be cast to android.widget.AbsListView$LayoutParams 
+0

你可以把一個'EditText'作爲'查看'但不是相反。 –

+2

我認爲你需要使用LinearLayout.LayoutParams代替ViewGroup.LayoutParams爲LayoutParams移除導入行並導入LinearLayout.LayoutParams。它應該工作。 –

回答

1

現在,你已經導入了LinearLayout佈局參數,這是一個錯誤的導入。 這就是爲什麼你要

java.lang.ClassCastException:android.view.ViewGroup $的LayoutParams不能轉換到android.widget.AbsListView $的LayoutParams

因爲你想添加線性佈局PARAMS到AbsList佈局,應該充滿AbdList PARAMS

此行是錯誤的:

v.setLayoutParams(新LAYO utParams(LayoutParams.MATCH_PARENT,80));

變化的LayoutParams到:

AbsListView.LayoutParams 

或更改您的導入:

import android.widget.AbsListView; 
+0

感謝現在的工作。 – Mihir

1

使用AbsListView.LayoutParams

v.setLayoutParams(new AbsListView.LayoutParams(LayoutParams.MATCH_PARENT, 80));