いくつかのボタンと、ボタンの下にある対応するテキストビュー (ボタン、テキストビュー、ボタン、テキストビュー...) を動的に作成しています。その上のボタンを押すと textView が表示され、同じボタンを押すと再び非表示になります。ボタンと一致するテキストビューに同じタグを付けました。次のように動作させたい: tag1 でボタンを押し、tag1 で textview を表示し、もう一度ボタンを押すと非表示になります。現在、ボタンのいずれかを押すと、最後に作成されたテキストビューのみが表示および非表示になります。更新されたコード:
private class ReadJSONFeedTask extends AsyncTask<String, Void, String> {
protected String doInBackground(String... urls) {
return readJSONFeed(urls[0]);
}
protected void onPostExecute(String result) {
Button button1;
TextView tv;
try {
JSONArray jsonArray = new JSONArray(result);
Log.i("JSON", "Number of surveys in feed: " +
jsonArray.length());
LinearLayout news = (LinearLayout)findViewById(id.hello);
//---print out the content of the json feed---
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
button1 = new Button(getApplicationContext());
button1.setLayoutParams(new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT));
button1.setId(i);
tv = new TextView(getApplicationContext());
tv.setLayoutParams(new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT));
tv.setId(i);
button1.setText(jsonObject.getString("title"));
tv.setText(jsonObject.getString("text"));
news.addView(button1);
news.addView(tv);
button1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
v.isPressed();
if(v.getVisibility() == View.GONE) {
v.setVisibility(View.VISIBLE);
} else {
v.setVisibility(View.GONE);
}
}
});
Toast.makeText(getBaseContext(), jsonObject.getString("title") +
" - " + jsonObject.getString("text"),
Toast.LENGTH_SHORT).show();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
問題は、onClick メソッドで変数 tv をどのように呼び出すかです。パラメータに別のビューを追加することはできません。i ビュー v はボタンのビューです。これを修正するにはどうすればよいですか?