我可以创建自己的 .toString() 函数吗?

如何在 vigiltime.setText 中显示对象的另一个字段?我希望它显示来自 parishArrayList 的对象的时间字段的特定相关值?parent.getItemAtPosition(position) 已经检索到特定对象,那么我怎样才能让它解析 onItemSelected 方法中的相关对象详细信息?


@Override

protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);


    parishArrayList = new ArrayList<>();

    parishArrayList.add(new Parish(1, "Aghyaran", "Termonamongan, N.West Tyrone", "6.30pm", "10.00am"));

    parishArrayList.add(new Parish(2, "Castlederg", "Castlederg, N.West Tyrone", "7pm", "11.00am"));

    parishArrayList.add(new Parish(3, "Strabane", "Strabane, N.West Tyrone", "8pm", "12.00am"));


    Spinner parishSpinner = (Spinner) findViewById(R.id.spinner);


    // Create an ArrayAdapter using the parishArrayList and a default spinner layout

    ArrayAdapter<Parish> parishAdapter = new ArrayAdapter<Parish>(getApplicationContext(), android.R.layout.simple_spinner_item, parishArrayList);


    // Specify the layout to use when the list of choices appears

    parishAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);


    // Apply the adapter to the spinner

    parishSpinner.setAdapter(parishAdapter);


    parishSpinner.setOnItemSelectedListener(this);

}

@Override

    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

    TextView vigiltime = (TextView) findViewById(R.id.vigiltime);

    vigiltime.setText("Spinner selected : ");

    vigiltime.setText(vigiltime.getText() + parent.getItemAtPosition(position).toString());


}


猛跑小猪
浏览 126回答 3
3回答

慕标琳琳

您不需要使用toString(). 您可以简单地调用教区类的相关函数或变量:Parish item = parent.getItemAtPosition(position);vigilTime.setText("Spinner selected : ");vigilTime.append(item.getTime() + " "); //append has the same effect as what you're currently doingvigilTime.append(item.getSomethingElse + " ");//etc如果您只想使用toString(),请在您的教区类中覆盖它:@Override&nbsp;public String toString() {&nbsp; &nbsp; return /* format the String you want returned here */}编辑:回答你的实际问题:ViewAdapter#getItemAtPosition()返回一个对象,而不是您的特定类。你需要把这个电话投给教区:Parish item = (Parish) parent.getItemAtPosition(position);然后就可以调用了item.getVigilTimes();。

jeck猫

覆盖要更改字符串表示形式的类中的 toString 方法。@Overridepublic String toString() {&nbsp; &nbsp; //TODO - Here.}

动漫人物

toString() 方法继承自 Java 中所有其他类都继承自的对象类。基础的 toString() 返回这个: getClass().getName() + '@' + Integer.toHexString(hashCode())字符串类,如果你正在创建一个新的字符串对象,比如 Stringfirst_name = 'someFirstName'&nbsp;实际上用构造函数创建了一个实例,String first_name = new String("someFristName")&nbsp;并且此类再次覆盖对象 toString() 方法。Oracle 的文档说到 String 类中的 toString(),这个对象(它已经是一个字符串!)本身是返回的。创建或构建的每个类都直接或间接继承自 Object 类,该类具有基本的 toString(),可以在当前类中覆盖该类。就这么简单...&nbsp;@Override&nbsp;public String toString(){&nbsp; &nbsp; &nbsp; //to do logic here&nbsp;}您覆盖的 toString() 只不过是您的 getName() 方法。考虑是否有必要。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java