3

私はAndroid開発に不慣れです。私がクリックを処理してきた方法はandroid:onClick、ボタンのマニフェスト ファイルに属性を設定することでした。私が疑問に思っているのは、一般的に長いクリックを処理する最良の方法です。の実装について読んだことonLongClick()がありますが、ビューを拡張するのではなく、(上記のような) ハンドラーを使用する方法はありますか? 拡張された View クラスを使用してプロジェクト全体を再構築する必要がないため、非常に役立ちます。

編集

明確にする必要があります。ListViewリスト内の要素を長押ししたときに何が起こるかを設定したいと思います。リスト内の各要素はTextView. 回答の 1 つに従って、以下のコードを追加したところ、強制的に終了しました。

public class TwitterActivity extends ListActivity {
    List<String> tweets = new LinkedList<String>();

    @Override
    public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);

            setListAdapter(new ArrayAdapter<String>(this, R.layout.layout, tweets));

            TextView view = (TextView) findViewById(R.id.ListTemplate);
            view.setOnLongClickListener(new OnLongClickListener() {
                @Override
                public boolean onLongClick(View v) {
                    Toast toast = new Toast(TwitterActivity.this);
                    toast.setText("LongClick");
                    toast.show();

                    return true;
                }
            });

    //...
    }
}
4

5 に答える 5

2

findViewByID を使用してボタンのハンドルを取得してから、setOnLongClickListener を呼び出します。

Button b = (Button)findViewByID (R.id.button1);
b.setOnLongClickListener(new OnLongClickListener() {
    @Override
    public boolean onLongClick(View v) {
        //to do
    }
});
于 2012-03-06T18:50:05.100 に答える
0

XML 属性を持つ唯一のイベント ハンドラはandroid:onClick. 他のすべてのイベント ハンドラーは、実行時に Java コードから登録されます。技術的にandroid:onClickは、実行時に Java コードから登録することもできますが、問題の Java コードを記述する必要はありません。

したがって、次のようなことを行う必要があります。

View.OnLongClickListenerhandler = View.OnLongClickListener() {
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.myButton: // doStuff
                break;
            case R.id.myOtherButton: // doStuff
                break;
        }
    }
}

findViewById(R.id.myButton).setOnLongClickListener(handler);
findViewById(R.id.myOtherButton).setOnLongClickListener(handler);
于 2012-03-06T18:50:51.150 に答える