获得奇怪的输出

时间:2016-03-29 20:16:37

标签: android json retrofit

您好我正在尝试使用改造一切都很好。但我得到这样的输出。 [examples.sewoyebah.com.retrofit.model.Model@41ce7408,example.sewoyebah.com.retrofit.model.Model@41ce7698]

这是我的MainActivity

public class MainActivity extends AppCompatActivity {

@Bind(R.id.activity_main_tv_display)
TextView textData;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    ButterKnife.bind(this);
}

@OnClick(R.id.activity_main_btn_show)

void press() {
    RemoteApi.Factory.getInstance().getModel().enqueue(new Callback<List<Model>>() {
        @Override
        public void onResponse(Call<List<Model>> call, Response<List<Model>> response) {
            textData.setText(String.valueOf(response.body()));
            Log.e("--success--", String.valueOf(response.body()));
        }

        @Override
        public void onFailure(Call<List<Model>> call, Throwable t) {
            Log.e("--fail--", t.getMessage());
        }
    });
}
}

这是我的模特

public class Model {

@SerializedName("Title")
@Expose
private String Title;
@SerializedName("Message")
@Expose
private String Message;
@SerializedName("id")
@Expose
private int id;
// getters and setters declare
}

这是我的界面

public interface RemoteApi {

String BASE_URL = "xyz/";
@GET("api/Cards")
Call<List<Model>> getModel();
class Factory {
    public static RemoteApi remoteApi;
    public static RemoteApi getInstance() {
            Retrofit retrofit = new Retrofit.Builder().addConverterFactory(GsonConverterFactory.create())
                    .baseUrl(BASE_URL)
                    .build();
            remoteApi = retrofit.create(RemoteApi.class);
            return remoteApi;
        }
    }
}

我的API看起来像这样

[{
  "Title": "xyz",
  "Message": "hello",
  "id": 1
}, {
  "Title": "abc",
  "Message": "hello",
  "id": 2
}] 

1 个答案:

答案 0 :(得分:0)

如果我更正,

    public void onResponse(Call<List<Model>> call, Response<List<Model>> response) {
        textData.setText(String.valueOf(response.body()));
        Log.e("--success--", String.valueOf(response.body()));
    }

您在响应中阅读的正文是一个Model对象列表。 如果要获取标题和消息值,则应该迭代此列表。

修改 你可以像这样迭代:

public void onResponse(Call<List<Model>> call, Response<List<Model>> response) {
    for (Model eachModel : response.body())
    {
        Log.e("--success--", eachModel.title);
    }
}

这将向控制台输出每个元素的标题。如果要在文本视图中显示所有标题,则可能需要创建列表或重构textview代码。