这是我在这个网站上的第一个问题,我也是 Android 新手。我正在使用在线 API 创建应用程序。我正在使用 XML 中的这个 API 并将响应解析为 ListViews。我已经到了一个地步,我想从一个活动中的 ListView 中选择一个项目,并将该信息与另一个包含所选项目更多信息的 ListView 一起发送到下一个活动。例如,一个活动有一个乐队列表。单击乐队名称将显示乐队名称和下一个活动的巡演日期列表。根据我的 API,需要乐队的 ID 号才能访问乐队巡演信息,我试图将 ID 号作为搜索参数传递,但无法使其正常工作。我确实设法在 androidhive.info 上找到了一个不错的教程,但似乎无法应用这些技术。
ListView lv = getListView();
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// getting values from selected ListItem
String displayName = ((TextView) view.findViewById(R.id.tvDisplayName)).getText().toString();
String onTourUntil = ((TextView) view.findViewById(R.id.tvOnTourUntil)).getText().toString();
String identification = ((TextView) view.findViewById(R.id.tvId)).getText().toString();
// Starting new intent
Intent in = new Intent(getApplicationContext(), SingleArtistActivity.class);
in.putExtra(KEY_DISPLAY_NAME, displayName);
in.putExtra(KEY_ID, identification);
in.putExtra(KEY_ON_TOUR_UNTIL, onTourUntil);
new AsyncDownload().execute(identification);
startActivity(in);
}
});
}
private class AsyncDownload extends AsyncTask<String, String, String> {
ProgressDialog pDialog;
@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(ArtistsSearchActivity.this);
pDialog.setMessage("Please Wait...");
pDialog.setCancelable(false);
pDialog.show();
}
@Override
protected String doInBackground(String... params) {
Log.v(TAG, "query is" + params[0]);
String result = new ArtistCalendarHelper().getXml(params[0]);
return result;
}
我的 AsyncDownload 类在我的 onClickListener 中被调用。该类调用包含 URL 和 API 密钥的帮助程序。
public class ArtistCalendarHelper {
private static final String TAG = "ArtistCalendarHelper";
private static final String SONGKICK_URL = "http://api.songkick.com/api/3.0/artists/";
private static final String API_KEY = "yIekMi1hQzcFheKc";
public String getXml(String identification) {
HttpClient httpclient = new DefaultHttpClient();
String getParameters = "";
try {
getParameters = URLEncoder.encode(identification, "UTF-8")
+ "/calendar.xml?apikey=" + URLEncoder.encode(API_KEY, "UTF-8");
} catch (UnsupportedEncodingException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
String url = SONGKICK_URL + getParameters;
// Prepare a request object
HttpGet httpget = new HttpGet(url);
// Execute the request
HttpResponse response;
这些方法用于在初始搜索中获取乐队名称。怎么能改变它来使用从 ListView 中检索到的参数来搜索旅游信息?这与从 EditText 字段中获取搜索查询有什么不同?我不认为会有很大的不同。我试图包含受影响的代码。我不确定我应该提供多少代码。