5

Listedeki görüntüde select/unselect görüntülemede sorun yaşıyorum. benim durumumda ,HorizontalListview ile görüntü seç ve seçimi kaldır

ByDefault->image color(Yellow) 
First click->image color(Orange) 
Second click->image color(Yellow) 

kullanıcı üzerinde yolu sonra mükemmel tıklayabilir, ancak ikinci görüntü üzerinde görüntünün birinci ve ikinci zaman tıklamayla kullanıcı tarafından ilk kez tıklama sonra her iki görüntü rengi turuncu olduğunda (işte sorun) ise.

Benim durumumda, bir seferde yalnızca bir görüntü rengi turuncu (seçili) olur.

+0

gibi onItemClickEvent ekleyin. Benim için anlamak zor. –

+0

@Yul, bu http://pastebin.com/3eeZ38dN – Harshid

cevap

1
  1. Yalnızca HoneyComb ve yukarısını destekliyorsanız, kolay olacaktır. Bir StateListDrawable oluşturun ve liste öğesinin arka planını listeleyecek şekilde ayarlayın.

selector.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_activated="true" android:drawable="@drawable/item_focus" /> 
    <item android:drawable="@android:color/transparent" /> 
</selector> 

listview öğenin düzen

<ImageView 
    android:id="@+id/image" 
    android:layout_width="100dp" 
    android:layout_height="100dp" 
    android:padding="5dp" /> 

.210

ve son, önceden Petek desteklemek için yönetiyorsa, kendi düzeni sınanabilir uygulamak yazmak zorunda kalacak SINGLE

list.setChoiceMode(ListView.CHOICE_MODE_SINGLE); 

2. için listview seçim modunu ayarlayın. Bunu, işaretli durumu kullanarak çözmek için yaparsınız. LinearLayout ile bir örnek verelim (aynı şeyi başkalarıyla da yapabilirsiniz).

package com.example.listviewactivestate; 

import android.content.Context; 
import android.util.AttributeSet; 
import android.view.View; 
import android.widget.Checkable; 
import android.widget.LinearLayout; 

public class CustomLinearLayout extends LinearLayout implements Checkable { 


private static final int[] CHECKED_STATE_SET = { android.R.attr.state_checked }; 

private boolean checked = false; 

public CustomLinearLayout (Context context, AttributeSet attrs) { 
    super(context, attrs); 
} 

public CustomLinearLayout (Context context) { 
    super(context); 
} 

@Override 
public boolean isChecked() { 
    return checked; 
} 

@Override 
public void setChecked(boolean checked) { 
    this.checked = checked; 

    refreshDrawableState(); 

    // Propagate to childs 
    final int count = getChildCount(); 
    for (int i = 0; i < count; i++) { 
     final View child = getChildAt(i); 
     if (child instanceof Checkable) { 
      ((Checkable) child).setChecked(checked); 
     } 
    } 
} 

@Override 
protected int[] onCreateDrawableState(int extraSpace) { 
    final int[] drawableState = super.onCreateDrawableState(extraSpace + 1); 
    if (isChecked()) { 
     mergeDrawableStates(drawableState, CHECKED_STATE_SET); 
    } 
    return drawableState; 
} 

@Override 
public void toggle() { 
    this.checked = !this.checked; 
} 
} 

Kullanım SINGLE için state_checked

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_checked="true" android:drawable="@drawable/item_focus" /> 
    <item android:drawable="@android:color/transparent" /> 
</selector> 

Ayrıca set listview seçim moduna xml

<?xml version="1.0" encoding="utf-8"?> 
<com.example.listviewactivestate.CustomLinearLayout 

xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" 
android:background="@drawable/selector" 
> 

<ImageView 
    android:id="@+id/image" 
    android:layout_width="100dp" 
    android:layout_height="100dp" 
    android:padding="5dp" /> 

</com.example.listviewactivestate.CustomLinearLayout > 

Değişim state_activated bu özel görünüm. İşe yaramazsa, bazı kodlar veya resmi ekleyiniz bu

list.setOnItemClickListener(new OnItemClickListener() { 

      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
       // TODO Auto-generated method stub 
       list.setItemChecked(position, true);//make sure click item is set to checked. 

      } 
     }); 
+0

teşekkürler. ama benim düzenimde 2 textview ve imageview.So var nasıl sadece imageview renk yapmak, benim textview da tıklanabilir. – Harshid

+0

Sanırım, düzeni başka bir düzende üst üste koyabilir ve daha fazla 2 düğme ekleyebilirsiniz. –

+0

ya ana doğrusal düzen ve sonra ilgili düzen ile tüm nesne var. – Harshid