[解決済み] ItemTouchHelper.SimpleCallbackを使用してRecyclerViewの位置のスワイプを無効化する。
質問
私は recyclerview 22.2.0 を使用しており、ヘルパー クラス ItemTouchHelper.SimpleCallback を使って スワイプして離す を有効にしています。しかし、私はその上にヘッダーのタイプを持っているので、私はアダプタの最初の位置のためのスワイプ動作を無効にする必要があります。というように RecyclerView.Adapter には isEnabled() メソッドを通してビューのインタラクションを無効化しようとしました。 isEnabled() と isFocusable() をViewHolderの作成自体に組み込んでみましたが、うまくいきませんでした。スワイプの閾値を一杯に調整しようと、例えば 0f オット 1f SimpleCallbackのメソッドで getSwipeThreshold() と入力しても、成功しません。
私のコードのいくつかの断片は、あなたが私を助けるのを助けるために。
私のアクティビティです。
@Override
protected void onCreate(Bundle bundle) {
//... initialization
ItemTouchHelper.SimpleCallback simpleItemTouchCallback = new ItemTouchHelper.SimpleCallback(0,
ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT) {
@Override
public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder,
RecyclerView.ViewHolder target) {
return false;
}
@Override
public float getSwipeThreshold(RecyclerView.ViewHolder viewHolder) {
if (viewHolder instanceof CartAdapter.MyViewHolder) return 1f;
return super.getSwipeThreshold(viewHolder);
}
@Override
public void onSwiped(RecyclerView.ViewHolder viewHolder, int swipeDir) {
}
};
ItemTouchHelper itemTouchHelper = new ItemTouchHelper(simpleItemTouchCallback);
itemTouchHelper.attachToRecyclerView(recyclerView);
}
そして、共通のアダプタに に ビュータイプがあります。その中で ビューホルダー で、スワイプを無効化したい場合は、そうしました。
public static class MyViewHolder extends RecyclerView.ViewHolder {
public ViewGroup mContainer;
public MyViewHolder(View v) {
super(v);
v.setFocusable(false);
v.setEnabled(false);
mContainer = (ViewGroup) v.findViewById(R.id.container);
}
}
どのように解決するのですか?
少し遊んだ後、私はそれを管理する SimpleCallback というメソッドを持っています。 getSwipeDirs() . に対して特定のViewHolderを持っているので スワイプできない の位置のために、私は インスタンスオブ を使ってスワイプを回避することができます。そうでない場合は、AdapterのViewHolderの位置を利用してこの制御を行うことができます。
Java
@Override
public int getSwipeDirs(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {
if (viewHolder instanceof CartAdapter.MyViewHolder) return 0;
return super.getSwipeDirs(recyclerView, viewHolder);
}
コトリン
override fun getSwipeDirs (recyclerView: RecyclerView, viewHolder: RecyclerView.ViewHolder): Int {
if (viewHolder is CartAdapter.MyViewHolder) return 0
return super.getSwipeDirs(recyclerView, viewHolder)
}
関連
-
[解決済み] インスタンス状態の保存を使用してアクティビティ状態を保存するにはどうすればよいですか?
-
[解決済み】Android UserManager.isUserAGoat()の正しい使用例?)
-
[解決済み] SDカードからファイルを削除する方法を教えてください。
-
[解決済み] Androidでマイナスマージンを使用するのは悪いことですか?
-
[解決済み] アンドロイドアプリのユーザーデータを消去する
-
[解決済み] Android - Snackbar vs Toast - 使い方と違い。
-
[解決済み] APKが署名済みかデバッグビルドかを確認するには?
-
[解決済み] FragmentPagerAdapterのgetItemが呼び出されない
-
[解決済み] TextView.setTextSizeの挙動がおかしい - テキストビューのテキストサイズを画面ごとに動的に設定する方法
-
[解決済み] アンドロイドボタンセレクター
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] アプリ内課金テスト:android.test.purchased already owned
-
[解決済み] バイト配列の画像ファイルをビットマップに変換するには?
-
[解決済み] ArrayList<MyCustomClass>をJSONArrayに変換する。
-
[解決済み] Android - Snackbar vs Toast - 使い方と違い。
-
[解決済み] 非ActivityクラスでContextを取得する [重複].
-
[解決済み] react nativeアプリのバージョン番号を更新する方法
-
[解決済み] AsyncTaskLoaderとAsyncTaskの比較
-
[解決済み] サポートライブラリのアクションバーをPreferenceActivityに追加するには?
-
[解決済み] アンドロイドボタンセレクター
-
[解決済み] HttpURLConnectionを使ったPOSTによるファイル送信