0

基本的に私はAndroidが初めてで、それについてあまり知りません。ListViewcustomを 5 つの customで使用しているクイズ プログラムを作成していTextViewsます。1 つは質問用、もう 4 つはオプション用です。私の問題は、TextViewクリック可能なLisViewモードと選択モードを単一にしたいということです。つまり、1 つのテキストをクリックすると、他TextViewのすべてのテキストをクリックできなくなるはずです。私の問題はTextView、子レイアウトの a をクリックするたびに、外側のレイアウトのみListViewが選択されることです。ここに私のリストビューのスクリーンショットがあります

https://picasaweb.google.com/108429569548433380582/Android?authkey=Gv1sRgCJ3kxJz7tLvaTg#5783846428648608706

4

5 に答える 5

1

次の 2 つの方法で実行できます。

1. onClickListener を次のように直接使用します。

textView.setOnClickListener(new View.OnClickListener(
        public void onClick(View arg0) {

            // Do anything here.

        }
    });

また

2.XMLファイルの宣言で、次の<TextView />ようにもう 1 つの属性を追加します。

android:onClick="onClickTextView"

Yout アクティビティで、次の関数を追加します。

public void onClickTextView(View view) {

         // Do anything here.
}

アップデート:

次のコードを使用して、TextView でクリック イベントを取得します。

// Click event for single list row
        getListView().setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                    long arg3) {
                TextView tv = (TextView) (findViewById(R.id.title));
                if (tv != null) {
                    tv.setOnClickListener(new View.OnClickListener() {

                        @Override
                        public void onClick(View v) {
                            Toast.makeText(MainActivity.this, "CLICKED",
                                    Toast.LENGTH_LONG).show();
                        }
                    });
                } else {
                    Toast.makeText(MainActivity.this, "TV not found",
                            Toast.LENGTH_LONG).show();
                }
            }
        });
于 2012-09-03T07:23:44.950 に答える
0

Shrikant と adam に感謝します。申し訳ありませんが、返信が非常に遅くなりました。

Shrikant のようにアダプタ クラスでこれを使用します。

textViewa.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // Do anything here.
        }
    });

    textViewb.setOnClickListener(new View.OnClickListener() {
        public void onClick(View arg0) {
            // Do anything here.
        }
    });

    //and so on...

    // or better to use ViewHolder holder; for these type of listviews;

    View.OnClickListener clickListener = new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            // Do what you want to do.

            // for my i have to call a method in my parent activity. so in    constructor of adapter, I passed the activity and then typecasted it like

            ParentActivity parent = (ParentActivity) activity;
            parent.chosenAnswer(view.getId());

            // then in chosenAnswer(int id) in parentActivity use a switch case for the same logic as in Adam's answer.

            // OR 
            //you can write like this too..

            switch (view.getId()) {
                case R.id.textViewa:
                    break;
                case R.id.textViewb:
                    break;
                case R.id.textViewc:
                    break;
                case R.id.textViewd:
                    break;
            }
        }
    };
于 2016-02-07T12:35:16.227 に答える
0

リストビューのコンテンツを設定するために BaseAdapter を拡張するとします ->

TextView リスナーを開き、現在のホルダー位置のタグを設定し、onclick メソッドで操作を実行します。

于 2012-09-03T07:36:09.790 に答える
0

これを試して :

1つのテキストビューを選択すると、他の3つはクリックできなくなります

    final TextView texta = (TextView) findViewById(R.id.text_a);
    final TextView textb = (TextView) findViewById(R.id.text_b);
    final TextView textc = (TextView) findViewById(R.id.text_c);
    final TextView textd = (TextView) findViewById(R.id.text_d);
    texta.setOnClickListener(new OnClickListener()
    {
        public void onClick(View v) {

            textb.setClickable(false);
            textc.setClickable(false);
            textd.setClickable(false);
        }

    });
    textb.setOnClickListener(new OnClickListener()
    {
        public void onClick(View v) {

            texta.setClickable(false);
            textc.setClickable(false);
            textd.setClickable(false);
        }

    });
    textc.setOnClickListener(new OnClickListener()
    {
        public void onClick(View v) {

            texta.setClickable(false);
            textb.setClickable(false);
            textd.setClickable(false);
        }

    });
    textd.setOnClickListener(new OnClickListener()
    {
        public void onClick(View v) {

            texta.setClickable(false);
            textb.setClickable(false);
            textc.setClickable(false);
        }

    });
于 2012-09-03T07:46:50.757 に答える
0

これは、ListView の既定の動作です。クリックできるのは、リスト行または行内の項目のいずれか 1 つだけです。

例:行アイテムがtextView(あなたの場合のように)の場合、リスト行はクリック可能になりますが、行アイテムがボタンの場合、リスト行はクリック可能になりません。TextView をクリック可能にした場合も同様です。

あなたの要件では、(複数のテキストビューとそれらを無効にして有効にする代わりに) RadioGroup を使用する方が良い方法です。質問には TextView を、オプションには RadioGroup を使用して、リスト項目のカスタム レイアウトを使用する必要があります。

レイアウトは次のようになります。
ここに画像の説明を入力

参照用に次のリンクに従ってください: RadioGroup
listViewの場合

これが役立つことを願っています

于 2012-09-03T07:48:16.360 に答える