2016-10-06 7 views
0

私はAndroidに慣れておらず、テーブルの形で学校のベルスケジュールを表示し、現在の期間を表すListViewアイテムに背景色を強調表示/適用するだけのアプリで作業しています。 activity_bell_schedule.xmlからAndroid ListViews Force Selection

現在、私はlistSelector色を設定介して、そうしようと試みてきた

<ListView android:layout_height="wrap_content" 
     android:layout_width="0dp" 
     android:id="@+id/lstPeriods" 
     android:layout_weight=".4" 
     android:listSelector="@color/colorAccent" 
     android:divider="@color/colorPrimaryDark" 
     android:dividerHeight="1dp"/> 

しかし、私は、その後に選択を強制/ロックできるようにする必要があります現在の期間のListViewアイテムとして残ります。私はのonCreate私BellScheduleActivityクラスの機能とを通じて呼び出される関数でそれを設定することで、試してみました。この(私はテスト目的のための位置のために2を使用):BellScheduleActivity.javaから

lvp.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
      System.out.println(position); 
      lvp.setSelection(2); 
      lvp.setItemChecked(2, true); 
      lvt.setSelection(2); 
     } 
    }); 

I選択のハイライトと選択を含むさまざまな方法を試みました。誰かが私が間違ってやっていることを知っている、あるいはうまくいくかもしれない別のアプローチがあるなら、私は本当にそれを感謝するでしょう。

enter image description here

答えて

0

あなたのリストビューにカスタムアダプタを設定することにより、これを行うことができます。そのアダプタでは、カスタム動作を定義できます。あなたのケースでは

そのアダプタで、次のアダプタ -

  • getItemViewType内のメソッド()
  • getViewTypeCount()
  • getViewメソッド()

を上書きするだろうあなたあなたの2つのビュータイプを定義することができます。 getView()では、getItemViewType()を呼び出してカスタム動作を定義することができます。

Example for getItemViewType() is here

Another example which is similar to your question

これはあなたの問題を解決する必要があります。それが動作するかどうか私に教えてください。これは、カスタムlistViewを表示する際のデフォルトのパターンに似ています。

P.S. RecyclerViewは新しいListViewであり、Material Designの新しい標準であるため、RecyclerViewを使用することをお勧めします。

+0

ありがとう、これは私が必要としていたものです。以前は2つのリストビューを持っていましたが、カスタムアダプターでこれを使用していただきありがとうございます。私は現在RecyclerViewを将来見ています。 –