-5

我是Java的初学者。

你知道这有什么问题吗?

我有 ActivityToSmartWatch 类

public class ActivityToSmartWatch extends BaseAdapter {

private Activity activity;
private ArrayList<String[]> data;
private static LayoutInflater inflater = null;
public String[] inkLevels = new String[5];
public final static String EXTRA_MESSAGE = "com.PrinterStatus.AppLab.MESSAGE";



public ActivityToSmartWatch(Activity a, ArrayList<String[]> inkLevels) {
    activity = a;
    data = inkLevels;
    inflater = (LayoutInflater) activity
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}

在里面我有 GetInkLevel 类

public String[] getInkLevel (String [] inkLevels, int position)
    {

        for (int i= 0; i <data.size(); i++)
        {
            System.arraycopy(data.get(position), 0, inkLevels, 0, data.get(position).length);

        }
        return inkLevels;
}

在另一个类中,我想这样称呼它

 ActivityToSmartWatch A2SSW = new ActivityToSmartWatch(activity, data);
 A2SSW.getInkLevel(inkLevels, position);

我知道那是错的,你知道我犯了什么错误吗?

4

2 回答 2

1

A2SSW是一个实例,ActivityToSmartWatch所以它不会有getInkLevel. 您需要获取GetInkLevel该类以调用其方法。您的 IDE 很可能会以某种方式通知您该方法不可用。

你能提供完整的ActivityToSmartWatch课程吗?

编辑:

您是否使用 inkLevels 数组来表示原色和黑色?可能值得创建一个pojo类:

public class InkCartridge {
    private int red;
    private int green;
    private int blue;
    private int black;

    public int getRed() {
        return red;
    }

    public void setRed(final int red) {
        this.red = red;
    }

    public int getGreen() {
        return green;
    }

    public void setGreen(final int green) {
        this.green = green;
    }

    public int getBlue() {
        return blue;
    }

    public void setBlue(final int blue) {
        this.blue = blue;
    }

    public int getBlack() {
        return black;
    }

    public void setBlack(final int black) {
        this.black = black;
    }

    @Override
    public String toString() {
        final StringBuilder sb = new StringBuilder("InkCartridge{");
        sb.append("red=").append(red);
        sb.append(", green=").append(green);
        sb.append(", blue=").append(blue);
        sb.append(", black=").append(black);
        sb.append('}');
        return sb.toString();
    }
}

与其使用它,不如使用ArrayList<String[]>List<List<String>>。使用列表通常更好。如果inkLevels是一个列表,您可以轻松地做一些方便的事情,例如根据方法名称inkLevels.get(index);getInkLevel应该做的事情。在这个主题上,值得一提的是,您应该遵守已知的命名约定。变量和方法应始终以小写字符开头,如果您打算返回一个数组,那么您的方法应称为 getInkLevels 而不是 getInkLevel。仅仅因为它编译并不能使它成为好的代码。这本书是任何开发者的必读之书。

在 for 循环中,使用这种风格会更干净:for(Type item : collection) {所以如果你有一个字符串列表,你会使用for(List<String> list : data) {

于 2013-08-29T08:12:17.370 回答
0

尝试这个:

ActivityToSmartWatch A2SSW = new ActivityToSmartWatch(activity, data);
String[] inkLevels = new String[];
inkLevels = A2SSW.getInkLevel(inkLevels, position);

您创建了一个字符串数组,但 getInklevel 返回一个字符串数组。希望这有帮助

于 2013-08-29T08:16:21.703 回答