0

いくつかのボタンと、ボタンの下にある対応するテキストビュー (ボタン、テキストビュー、ボタン、テキストビュー...) を動的に作成しています。その上のボタンを押すと 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 はボタンのビューです。これを修正するにはどうすればよいですか?

4

1 に答える 1