我的代码中出现了问题,找不到位置。我必须忽视一些事情。 我会解释一下。我有一个非常简单的界面:
public interface IMyEntity {
public String GetName();
}
然后我上课了。我想创建一个使用IMyEntity接口数组的SpinAdapter,所以我可以为我实现接口的所有pojo重用spinadapter。
public class SpinAdapter<IMyEntity> extends ArrayAdapter<IMyEntity> {
private Context context;
private IMyEntity[] values;
public SpinAdapter(Context context, int textViewResourceId, IMyEntity[] objects) {
super(context, textViewResourceId, objects);
this.context = context;
this.values = objects;
}
public int getCount(){
return values.length;
}
public IMyEntity getItem(int position){
return values[position];
}
public long getItemId(int position){
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
TextView label = new TextView(context);
label.setTextColor(Color.BLACK);
label.setText(this.values[position].GetName());
return label;
}
@Override
public View getDropDownView(int position, View convertView,
ViewGroup parent) {
TextView label = new TextView(context);
label.setTextColor(Color.BLACK);
label.setText(values[position].GetName());
return label;
}
}
我遇到的问题是:
label.setText(values[position].GetName());
在这里我应该可以访问GetName方法,但是我收到一个错误,说它不存在。我不能使用接口的GetName方法。
我在这里做错了什么? 我希望我的问题很明确。
谢谢,
比约
答案 0 :(得分:0)
无法实例化接口或抽象类。您需要一个实现您的接口的类才能使用它。
public class MyEntityImpl implements IMyEntity {
public String GetName() {
return "" ;
}
}
答案 1 :(得分:0)
您已经定义了一个接口,但没有实现它的类。您需要一个实现该接口的类型,然后创建该类型的数组,它将起作用。
答案 2 :(得分:0)
我的猜测是问题是它没有构造函数,尝试添加它。
答案 3 :(得分:0)
好的,找到了。我删除了整个班级并重新启动。现在它有效。
现在我的班级开始于:
public class IEntitySpinAdapter extends ArrayAdapter<IMyEntity>
这可行。
这不是:
public class SpinAdapter<IMyEntity> extends ArrayAdapter<IMyEntity>
非常感谢所有试图帮助的人!!!!