2016-11-15 117 views
0

我正在尝试显示从API获取的数据。我可以将数据显示为textview和日志,但无法将其显示为列表。在列表视图中显示json数据

我得到一个错误 “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); 
          } 

         } 

        }); 

} 
+0

在ArrayAdapter中将“this”替换为“Mainactivity.this” adapter = new ArrayAdapter (this,android.R.layout.simple_list_item_1,list); – WritingForAnroid

回答

1

删除构造函数中的this并使用MainActivity.this代替。这在你的情况下是匿名内部类的实例而不是Activity(上下文)。

1

你必须通过Context作为第一个参数构造函数为Adapter。您通过this,这不是Context。根据您的代码,MainActivity.this可能会工作