0

我的代码有问题,找不到在哪里。我一定是忽略了什么。我会解释的。我有一个非常简单的界面:

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 方法。

我在这里做错了什么?我希望我的问题很清楚。

谢谢,

比约恩

4

4 回答 4

0

不能实例化接口或抽象类。您需要一个实现接口的类才能使用它。

public class MyEntityImpl implements IMyEntity {
     public String GetName() {
         return "" ;
     }
}
于 2013-02-28T13:33:06.230 回答
0

您已经定义了一个接口,但没有实现它的类。您需要一个实现该接口的类型,然后创建一个该类型的数组,它将起作用。

于 2013-02-28T13:34:21.793 回答
0

我的猜测是问题在于它没有构造函数,请尝试添加它。

于 2013-02-28T13:44:15.433 回答
0

好的,找到了。我删除了整个班级并重新开始。现在它起作用了。

现在我的课开始于:

public class IEntitySpinAdapter extends ArrayAdapter<IMyEntity>

这有效。

这不会:

public class SpinAdapter<IMyEntity> extends ArrayAdapter<IMyEntity>

非常感谢所有试图提供帮助的人!!!!

于 2013-02-28T14:14:41.170 回答