以编程方式添加textView; textView无法应用anonymous.okhttp3.Callback

时间:2017-04-20 14:29:03

标签: android json android-layout

我正在尝试从我的应用程序返回的api中获取结果,以便每个都在自己的textView中。后来我想为每个添加一个按钮,但是现在我只是想在我的应用程序上显示结果。在我的try语句中,一切似乎都很好,除了在final TextView rowTextView = new TextView(this) this行,我给出了一个错误(用红色加下划线)说TextView android.content.Context textView cannot be applied anonymous.okhttp3.Callback。我不确定什么是错的以及如何解决它。我将不胜感激任何帮助!谢谢!这是我的代码:

OkHttpClient client = new OkHttpClient();

                    MediaType mediaType = MediaType.parse("application/octet-stream");
                    RequestBody body = RequestBody.create(mediaType, "{}");
                    Request request = new Request.Builder().url(url).get().build();


                            client.newCall(request).enqueue(new Callback() {
                                @Override public void onFailure(Call call, IOException e) {
                                    e.printStackTrace();

                                }

                                @Override public void onResponse(Call call, Response response) throws IOException {

                                    Headers responseHeaders = response.headers();
                                    for (int i = 0, size = responseHeaders.size(); i < size; i++) {
                                        System.out.println(responseHeaders.name(i) + ": " + responseHeaders.value(i));
                                    }

                                    //System.out.println(response.body().string());
                                    //System.out.println(response.body().toString());
                                    String jsonData  = response.body().string();
                                    try {
                                        JSONObject Jobject = new JSONObject(jsonData);
                                        JSONArray Jarray = Jobject.getJSONArray("results");
                                        final TextView[] myTextViews = new TextView[Jarray.length()];
                                        for (int i = 0; i < Jarray.length(); i++) {
                                            JSONObject object = Jarray.getJSONObject(i);
                                            System.out.println(object.toString());
                                            final TextView rowTextView = new TextView(this);
                                            rowTextView.setText(object.toString());
                                        }
                                    }catch (JSONException e) {
                                        e.printStackTrace();
                                        Log.e("MYAPP", "unexpected JSON exception", e);

                                    }


                                }
                            });

2 个答案:

答案 0 :(得分:0)

此代码:

  

final TextView rowTextView = new TextView(this);   rowTextView.setText(object.toString());

毫无意义。您创建了TextView,那很好。然后,您设置一些文本。好。但是显示它呢? TextView只是一个对象本身没有魔法显示。我建议您将TextView添加到您的布局中(如果需要,隐藏),然后设置消息并在有时间时显示它。

修改

您的代码也无效,因为this中的new TextView(this)指的是okhttp3.Callback,而不是Context(即您的活动)。

答案 1 :(得分:0)

在你的情况下,“this”是anonymous.okhttp3.Callback类的实例,使用类似“YourFragmentClass.this.getActivity()”的内容。