1

https://github.com/47deg/android-swipelistviewでスワイプ リスト ビューをセットアップしました。スワイプ関連のイベントを処理するためのさまざまなイベント リスナーを提供します。

1つのことを除いて、すべてが完全に機能します。

スワイプしたリスト項目のみ背景色を変更したい。元に戻ると元に戻ります。

ここに画像の説明を入力

アダプターからのタップイベントでこれを行うことができます。リストアダプターを使用してこれを行うこともできましたが、左スワイプ(リスナー)のみで背景を変更したいので、アダプターを使用できません。そのため、アダプターからこれを行うとうまくいかない場合があります。

次のリスナーは私のために働きます-

swipeListView.setSwipeListViewListener(new BaseSwipeListViewListener() {
    @Override
    public void onOpened(int position, boolean toRight) {       
         View v = swipeListView.getChildAt(position);
         swipeListView.getChildAt(position).setBackgroundColor(Color.CYAN);

         ci = u_items.get(position); // getter of list item data

         Toast.makeText(getApplicationContext(), ci.getTitle().toString(), Toast.LENGTH_SHORT).show();

    }

    @Override
    public void onClosed(int position, boolean fromRight) {
    }

    @Override
    public void onListChanged() {
    }

    . // other listeners
    .
    .
    .
    .
    .

これはエラーや警告をスローしませんが、背景が変更されているのを確認できません。トーストが表示されるので、左にスワイプするとリスナーが実際に機能します。

おそらく、背景自体の設定中に何か間違ったことをしています。わからない。swipelistviewはListViewを拡張するカスタム ビューであるため、そのリスナーだけからこれを行う方法は想像できません。

さらに、Android リストの選択を使用して XML ファイルの背景色を設定することもできましたが、タップ リスナーでのみ機能します。したがって、このオプションも削除されます。これ以外はすべて完璧に機能します。

正しい方向へのプッシュは良いでしょう。分析するためにさらにコードが必要な場合は、質問を編集できます。

4

2 に答える 2

1

すでに v を定義しているので、より適切に、より簡単に使用できます。

View v = swipeListView.getChildAt(position);
v.setBackgroundColor(Color.CYAN);
于 2013-09-01T18:03:45.583 に答える