【发布时间】:2017-03-10 11:03:05
【问题描述】:
我是 android 新手,正在尝试填充列表视图。
当我使用数组“months”时,列表会正确填充,但是当我尝试使用“myFamily”时,列表是空的。
为什么会这样?
myFamily 数组如下:
[免费婴儿吉尼斯啤酒,2-4-1 鸡尾酒,本周葡萄酒 21 英镑,无限咖啡 5 英镑,单伏特加红牛 5 英镑,买一送一(中午 12 点至晚上 8 点)]
完整代码:
public class offers extends AppCompatActivity {
private String jsonResponse;
private String[] months = { "JAN", "FEB", "MAR", "APR", "MAY", "JUNE", "JULY",
"AUG", "SEPT", "OCT", "NOV", "DEC" };
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_offers);
final String PREFS_NAME = "userDefaults";
final ListView myListView = (ListView) findViewById(R.id.listViewOffers);
SharedPreferences settings_get = getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);
final String smartCode2 = settings_get.getString("smartCode2", "");
final ArrayList<String> myFamily = new ArrayList<>();
RequestQueue queue = Volley.newRequestQueue(offers.this);
String url = "http://www.barfibrenetwork.co.uk/backend/androidoffers.php?smartcode="+smartCode2;
// Request a string response from the provided URL.
JsonArrayRequest req = new JsonArrayRequest(url,
new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
// Log.d(TAG, response.toString());
try {
// Parsing json array response
// loop through each json object
jsonResponse = "";
for (int i = 0; i < response.length(); i++) {
JSONObject person = (JSONObject) response
.get(i);
String name = person.getString("offertitle");
Log.i("OFFERTITLE:", name);
myFamily.add(name);
}
Log.i("REPLY:", String.valueOf(myFamily));
} catch (JSONException e) {
e.printStackTrace();
Toast.makeText(getApplicationContext(),
"Error: " + e.getMessage(),
Toast.LENGTH_LONG).show();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.i("Error: ", error.getMessage());
Toast.makeText(getApplicationContext(),
error.getMessage(), Toast.LENGTH_SHORT).show();
}
});
// Add the request to the RequestQueue.
queue.add(req);
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this,
android.R.layout.activity_list_item, android.R.id.text1, myFamily );
myListView.setAdapter(arrayAdapter);
}
【问题讨论】:
-
在 for() 循环完成后将适配器设置在 try{ } 块中,而不是在最后设置
-
你检查过你是否从电话中得到任何回应吗?
-
惊人的@BhavikMehta !谢谢。
-
@MattBlack:永远欢迎你,伙计