我学习Android并创建简单的联系人应用程序。
当我使用自定义适配器时,首次在Android Studio上运行时,我的数据不会显示。 但它出现在Android Monitor的日志中,并在Android Emulator上第二次运行时出现。 我使用 Volley 来使用Http Client并使用 Jackson 渲染JSON数据。
这是我的主要活动:
package fanjavaid.com.contactapp;
...
...
public class MainActivity extends AppCompatActivity {
private ListView contactListView;
private Context context;
private ContactAdapter adapter;
static List<Contact> contacts = new ArrayList<>();
private ObjectMapper objectMapper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Call API
callContactsAPI();
adapter = new ContactAdapter(this, contacts);
contactListView = (ListView) findViewById(R.id.contactList);
contactListView.setAdapter(adapter);
}
private void callContactsAPI() {
String url = "http://192.168.10.10/contacts";
JsonArrayRequest request = new JsonArrayRequest(url, new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
try {
if (objectMapper == null) {
objectMapper = new ObjectMapper();
}
// Jackson
contacts = Arrays.asList(objectMapper.readValue(response.toString(), Contact[].class));
Log.i("Jackson Results : ", objectMapper.writeValueAsString(contacts));
// Important think!
adapter.notifyDataSetChanged();
} catch (JsonMappingException e) {
e.printStackTrace();
} catch (JsonParseException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
error.printStackTrace();
}
});
Volley.newRequestQueue(this).add(request);
}
}
谢谢..