图片中的XML文件
以下是我的代码段:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
//create a button for the letter at this position in the alphabet
Button letterBtn;
if (convertView == null) {
//Inflate the button layout
我在下一行收到错误:
letterBtn = (Button)letterInf.inflate(R.layout.letter, parent, false);
} else {
letterBtn = (Button) convertView;
}
//set the text to this letter
letterBtn.setText(letters[position]);
return letterBtn;
}
错误是:
android.support.constraint.ConstraintLayout cannot be cast to android.widget.Button
我不知道如何摆脱它
答案 0 :(得分:0)
更改此行..
convertView =letterInf.inflate(R.layout.letter, parent, false);
答案 1 :(得分:0)
我认为您正在使用带有Constraint布局父级的按钮视图,该父级没有投射到按钮中,因此从行xml布局中查找按钮视图,然后您可以轻松地按下相关任务。
为了更好地澄清,请在此处粘贴xml
答案 2 :(得分:0)
您将始终遇到错误。如果你改变这一行
letterBtn = (Button)letterInf.inflate(R.layout.letter, parent, false);
到
convertView =letterInf.inflate(R.layout.letter, parent, false);
您仍然会在此(letterBtn = (Button) convertView
)点发生错误。因为您无法将 ConstraintLayout 强制转换为按钮。
如果你想恢复你的按钮,只需给它一个像这个android:id="@+id/my_button_id"
的id,然后用这样的方式在你的java代码中膨胀它:
convertView =letterInf.inflate(R.layout.letter, parent, false);
letterBtn = (Button)convertView.findViewById(R.id.my_button_id);
通过这种方式,您可以访问代码中的按钮。
亲切, 马修
编辑:顺便说一句,您的代码看起来像是适配器的内部。有什么意义呢。我只是因为你只返回按钮而感到有点困惑。