2011-10-15 5 views
6

私はGoogle(Android 3)の新しいフラグメントを使ってsplitviewを実装しています。SimpleCursorAdapterでハイライトリストアイテムを維持する

ユーザーがリストから何かを選択すると、詳細領域の値が表示され、リストアイテムのハイライト表示が表示されます。

私は、アレイアダプタを使用する場合には、以下を追加した後に焦点を当てたリスト項目を保つある:私が押したときに

getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE); 
getListView().setItemChecked(postition, true); 

を私はSimpleCursorAdapterを使用してデータベースを使用して、カスタムの列XMLは、それをファイルに変更する場合は、単にハイライトです。

はあなたのリストの行に対して有効にスタイルを設定する必要が

答えて

9

「私は、リストビューでハイライト項目を維持したいです」。キャッチは、これはAPIレベル11以上でのみ利用可能であるということです。

これを行う1つの方法は、2つの別々のスタイルを使用することです。 res/values-v11/styles.xmlで、あなたが持っている可能性があり:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <style name="activated" parent="android:Theme.Holo"> 
    <item name="android:background">?android:attr/activatedBackgroundIndicator</item> 
    </style> 
</resources> 

res/values/styles.xml一方、あなたが持っているでしょう:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <style name="activated"> 
    </style> 
</resources> 

あなたの行のレイアウトは、その後のような、そのactivatedスタイルを使用します。

あなたと組み合わせる
<?xml version="1.0" encoding="utf-8"?> 
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@android:id/text1" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:textAppearance="?android:attr/textAppearanceLarge" 
    android:gravity="center_vertical" 
    android:layout_marginLeft="4dip" 
    android:minHeight="?android:attr/listPreferredItemHeight" 
    style="@style/activated" 
/> 

を既存のCHOICE_MODE_SINGLEロジックでは、タップした後に行がアクティブになります。

+0

私はそれを確認して質問に答えたり、受け入れてください。 – Alex

+0

マークの色を変更する方法と値の意味を教えてください-v11 – Alex

+1

@ahmed:「マークの色を変更する方法」 - スタイルポイントの 'android:background'値を変更するに。今は、システム定義のテーマからの値( 'android:attr/activatedBackgroundIndicator')を指しています。 「値の意味は何ですか-v11」 - AndroidはAPIレベル11以上のデバイスでそのディレクトリのリソースを使用します。古いデバイスはそのディレクトリを無視します。 – CommonsWare

関連する問題