これはこのサイトでの最初の質問であり、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 フィールドから検索クエリを取得することとは異なりますか? そんなに差が出るとは思いませんでした。影響を受けるコードを含めようとしました。どのくらいのコードを提供すればよいかわかりません。