簡體   English   中英

在列表視圖中顯示JSON數據

[英]Display json data in listview

我正在嘗試顯示從api獲取的數據。 我可以將數據顯示為文本視圖並在日志中顯示,但無法將其顯示為列表。

我收到一個錯誤“ Cannot resolve constructor

Error:(72, 68) error: no suitable constructor found for ArrayAdapter(<anonymous FutureCallback<JsonArray>>,int,ArrayList<String>) constructor ArrayAdapter.ArrayAdapter(Context,int,int) is not applicable

這是完整的錯誤代碼

Error:(72, 68) error: no suitable constructor found for ArrayAdapter(<anonymous FutureCallback<JsonArray>>,int,ArrayList<String>) constructor ArrayAdapter.ArrayAdapter(Context,int,int) is not applicable (argument mismatch; <anonymous FutureCallback<JsonArray>> cannot be converted to Context) constructor ArrayAdapter.ArrayAdapter(Context,int,String[]) is not applicable (argument mismatch; <anonymous FutureCallback<JsonArray>> cannot be converted to Context) constructor ArrayAdapter.ArrayAdapter(Context,int,List<String>) is not applicable (argument mismatch; <anonymous FutureCallback<JsonArray>> cannot be converted to Context)

public class MainActivity extends AppCompatActivity {
ListView lView;
TextView tView;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    lView = (ListView) findViewById(R.id.lv);
    tView = (TextView) findViewById(R.id.textView);

    Ion.with(this).
            load("https://jsonplaceholder.typicode.com/users").
            asJsonArray().
            setCallback(
                    new FutureCallback<JsonArray>()
                    {
                        @Override
                        public void onCompleted(final Exception ex,
                                                final JsonArray array)
                        {
                            if(ex != null)
                            {
                                Toast.makeText(MainActivity.this,
                                        "Error: " + ex.getMessage(),
                                        Toast.LENGTH_LONG).show();
                            }
                            else
                            {
                                ArrayList<String> list = new ArrayList<String>();
                                for(final JsonElement element : array)
                                {
                                    final JsonObject  json;
                                    final JsonElement nameElement;
                                    final JsonElement usernameElement;
                                    final String      name;
                                    final String      username;
                                    json              = element.getAsJsonObject();
                                    nameElement       = json.get("name");
                                    usernameElement   = json.get("username");
                                    name              = nameElement.getAsString();
                                    username          = usernameElement.getAsString();

                                    Log.d("X",
                                            name + " -> " + username);
                                    list.add(name);
                                    list.add(username);
                                    tView.setText(name);
                                }
                                /*  
                              for (int i = 0; i < array.size(); i++) {
                                    list.add(array.get(i).toString());
                                }*/
                                ArrayAdapter<String> adapter = new ArrayAdapter<String>
                                        (this,android.R.layout.simple_list_item_1,list); //ERROR HERE
                                lView.setAdapter(adapter);
                            }

                        }

                    });

}

您必須將Context作為Adapter構造函數的第一個參數傳遞。 您通過了this ,這不是Context 根據您的代碼MainActivity.this可能有效

在構造函數中刪除this ,改用MainActivity.this 在您的情況下,這是匿名內部類的實例,而不是Activity(上下文)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM