如何获取 JSON 作为映射并将其存储在数组列表中,然后将它们作为字符串获取并存储在列表中并从列表中一一获取?
问问题
59 次
1 回答
1
我以前做过同样的工作。检查我的活动:
public class BandMembers extends ListActivity {
public static final String TAG_MEMBER_NAME = "member_name";
public static final String TAG_MEMBER_SKILL = "member_skill";
public static final String TAG_THUMB_MEMBER_IMAGE = "member_thumb_image";
public static String URL = "http://clients.xxxxxxxx.com/xxxxxx/web_service/mainAPI.php";
ArrayList<HashMap<String, String>> memberList;
String responseData = null;
private ListView listView;
TextView title;
protected ImageLoader imageLoader = ImageLoader.getInstance();
DisplayImageOptions options;
public static class Config {
public static final boolean DEVELOPER_MODE = false;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.band_members);
Typeface tf = Typeface.createFromAsset(this.getAssets(), "font.TTF");
title = (TextView)findViewById(R.id.textBandMembers);
title.setEllipsize(TextUtils.TruncateAt.END);
title.setTypeface(tf);
options = new DisplayImageOptions.Builder()
.showStubImage(R.drawable.loading)
.showImageForEmptyUri(R.drawable.no_image_available)
.showImageOnFail(R.drawable.no_image_available)
.cacheInMemory()
.cacheOnDisc()
.bitmapConfig(Bitmap.Config.RGB_565)
.build();
memberList = new ArrayList<HashMap<String,String>>();
new AsyncData().execute();
}
class AsyncData extends AsyncTask<String, Void, Void> {
ProgressDialog pDialog;
@Override
protected void onPreExecute() {
pDialog = new ProgressDialog(BandMembers.this);
pDialog.setTitle("Loading...");
pDialog.setMessage("Please wait...");
pDialog.show();
super.onPreExecute();
}
@Override
protected Void doInBackground(String... args) {
// TODO Auto-generated method stub
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(URL);
try {
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("rquest","{\"method\":\"band_members\",\"body\":[{}]}"));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs, HTTP.UTF_8));
HttpResponse response = httpclient.execute(httppost);
HttpEntity resEntity = response.getEntity();
responseData = EntityUtils.toString(resEntity);
try {
JSONArray data = new JSONArray(responseData);
for (int i = 0; i < data.length(); i++) {
HashMap<String, String> map = new HashMap<String, String>();
JSONObject c = data.getJSONObject(i);
String memberName = c.getString(TAG_MEMBER_NAME);
String memberSkill = c.getString(TAG_MEMBER_SKILL);
String memberImage = c.getString(TAG_THUMB_MEMBER_IMAGE);
map.put(TAG_MEMBER_NAME, memberName);
map.put(TAG_MEMBER_SKILL, memberSkill);
map.put(TAG_THUMB_MEMBER_IMAGE, memberImage);
memberList.add(map);
}
} catch (JSONException e) {
// TODO: handle exception
e.printStackTrace();
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
protected void onPostExecute(Void result) {
super.onPostExecute(result);
listView = (ListView) findViewById(android.R.id.list);
((ListView) listView).setAdapter(new BandMemberAdapter(memberList));
super.onPostExecute(result);
if (pDialog != null && pDialog.isShowing()) {
pDialog.dismiss();
}
}
}
public class BandMemberAdapter extends BaseAdapter {
ArrayList<HashMap<String, String>> memberListTemp;
HashMap<String, String> myData;
public BandMemberAdapter(ArrayList<HashMap<String, String>> memberList1)
{
memberListTemp=memberList1;
}
@Override
public int getCount() {
return memberListTemp.size();
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = convertView;
TextView textName;
TextView textSkill;
ImageView image;
if (convertView == null) {
view = getLayoutInflater().inflate(R.layout.band_member_row_file, parent, false);
image = (ImageView) view.findViewById(R.id.imageMember);
textName = (TextView) view.findViewById(R.id.textMemberName);
textSkill = (TextView) view.findViewById(R.id.textMemberInfo);
} else {
return convertView;
}
myData = memberListTemp.get(position);
Typeface tfb = Typeface.createFromAsset(getApplicationContext().getAssets(), "fontbold.TTF");
textName.setText(myData.get(BandMembers.TAG_MEMBER_NAME));
textName.setTypeface(tfb);
textSkill.setText(myData.get(BandMembers.TAG_MEMBER_SKILL));
textSkill.setTypeface(tfb);
String uri = "http://clients.xxxxxxx.com/xxxxxxxx/web_admin/assets/images/bandmembers/thumbs/" + myData.get(BandMembers.TAG_THUMB_MEMBER_IMAGE).replace(" ", "%20");
imageLoader.displayImage(uri, image, options);
return view;
}
}
}
希望这对您有所帮助。
于 2013-08-25T17:23:08.863 回答