1

我想在不使用 xml 布局的情况下填充项目,而是想在运行时创建视图。这是我的getView()方法。

 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
4

2 回答 2

1

现在你可能已经导入了 LinearLayout 布局参数,这是一个错误的导入。这就是为什么你得到

java.lang.ClassCastException: android.view.ViewGroup$LayoutParams 不能转换为 android.widget.AbsListView$LayoutParams

因为您正在尝试将 Linear Layout 参数添加到 AbsList Layout 应该填充 AbdList Params

这一行是错误的:

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

将 LayoutParams 更改为:

AbsListView.LayoutParams

或更改您的导入:

import android.widget.AbsListView;
于 2013-06-18T10:35:07.620 回答
1

使用 AbsListView.LayoutParams

 v.setLayoutParams(new AbsListView.LayoutParams(LayoutParams.MATCH_PARENT, 80));
于 2013-06-18T10:35:33.000 回答