从接口数组访问方法

时间:2013-02-28 13:27:17

标签: java android

我的代码中出现了问题,找不到位置。我必须忽视一些事情。 我会解释一下。我有一个非常简单的界面:

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 个答案:

答案 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>

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