1

リストビューを作成しました。このチュートリアルリンクの使用正常に動作します。しかし、問題は、アクティビティクラスにonitemclickリスナーを追加しようとすると、クリックアクションが機能しないことです。トーストメッセージを表示したいだけです。ここでは、onItemClickListenerのコードを示します。

listViewCity.setOnItemClickListener(new OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> a, View v, int position, long id) { 

                    String item = ((TextView)v).getText().toString();

                    Toast.makeText(getApplicationContext(), item, Toast.LENGTH_LONG).show();

            }  
        });

なぜそれが機能しないのか誰もが私に言うことができますか?

4

4 に答える 4

1

例外または強制終了が発生している場合は、それについて言及する必要があります。

まず、OnItemClickListener が間違っています。OnClickListener に渡されるビューは TextView ではないため、TextView にキャストすることはできません。

以下を使用して修正できます。

listViewCity.setOnItemClickListener(new OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> a, View v, int position, long id) { 
        String item = ((TextView)v.findViewById(R.id.cityName)).getText().toString();
            Toast.makeText(getApplicationContext(), item, Toast.LENGTH_LONG).show();

    }  
});

今やったことを試してみてください。うまくいくはずです。うまくいかない場合はandroid:autoLink="web"、xml ファイルからその行を削除する必要があるかもしれません。


この属性android:autoLink="web"は、ビューの TextView をクリック可能にしています。コメントで述べたように、サブビューのいずれかがクリック可能な場合、OnItemClickListener は子によって消費されるため、イベントを受け取りません。

于 2012-09-13T09:25:26.530 に答える
0

同じ問題が発生し、クリックする必要のある各ビューをクリック可能に設定してからリスナーを追加することで解決しました。カスタマイズされたアダプター内(getViewメソッド内)に次のメソッドを配置します。このようなもの:

public void setViewsClickable(int position) {
        myView.button.setClickable(true);
        myView.radioButton.setClickable(true);
        myView.button.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // what this button should do
            }
        });

        myView.radioButton.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // what clicking this radio button should do
            }
        });

    }
于 2013-02-20T12:29:24.817 に答える
0

これを試して...

listViewCity.setOnItemClickListener(new OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> a, View v, int position, long id) { 
                     String item = listViewCity.getItemAtPosition(position).toString();

                    Toast.makeText(getApplicationContext(), item, Toast.LENGTH_LONG).show();

            }  
        });
于 2012-09-13T09:09:51.303 に答える
0

これを使って

カスタムアダプターを使用しているため、リストビューのオンクリックを処理するには、カスタムアダプタークラスでこれを行う必要があります...

convertView.setClickable(true);
    convertView.setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View paramView)
                    {
                      //if you want you can use the "position" value to get the desired row items.
                    }
                    });
于 2012-09-13T08:08:59.043 に答える