2010-01-19 9 views
6

Je travaille sur l'application android et je suis capable d'afficher plusieurs icônes sur la carte en utilisant ItemizedOverlay et j'ai également implémenté la méthode onTap (int index) de ItemizedOverlay pour afficher des informations spécifiques aux icônes dans un fenêtre requise.setFocus (overlayItem) de ItemizedOverlay ne fonctionne pas

Maintenant, je veux changer l'icône de la superposition sélectionnée lorsque l'utilisateur clique sur un autre coponent. J'appelle la méthode setFocus (OverlayItem) de ItemizedOverlay pour afficher une icône différente de superposition spécifique. il fonctionne correctement lorsque l'utilisateur appuie sur une surimpression spécifique mais ne change pas d'icône lorsque j'appelle la méthode setFocus (OverlayItem).

Des pointeurs? Quelle est la meilleure façon de modifier l'icône de la superposition sélectionnée dans mapView?

J'ai la méthode getMarker surchargée de ma classe OverlayItem personnalisée pour afficher différents marqueurs pour l'état différent de overlayItem. et je veux utiliser la méthode setFocus (OverlayItem) pour changer l'état de OverlayItem et aussi changer le marqueur lorsqu'il est sélectionné.

@Override 
public Drawable getMarker(int stateBitset){ 
if(stateBitset==0){ 
    icon = Util.getCategoryMapIcon(0); 
    icon.setBounds(0-icon.getIntrinsicWidth()/2, 0-icon.getIntrinsicHeight(), icon.getIntrinsicWidth()/2, 0); 
    return icon; 
}else { 
    icon = Util.getCategoryMapIcon(OverlayItem.ITEM_STATE_SELECTED_MASK); 
    icon.setBounds(0-icon.getIntrinsicWidth()/2, 0-icon.getIntrinsicHeight(), icon.getIntrinsicWidth()/2, 0); 
    return icon; 
} 
} 

ici Util.getCategoryMapIcon (0) est la méthode utilitaire pour revenir icône appropriée, cette méthode prend quelques paramètres que je l'ai enlevé pour faire cet exemple look simple.

et ci-dessous est le code pour changer l'état

Button leftNavigation = (Button) findViewById(R.id.left_navigation_button); 
leftNavigation.setOnClickListener(new OnClickListener() { 
@Override 
public void onClick(View v) { 
    OverlayItem item = searchResultsOverlay.get(index+1); 
    setFocus(item); 
} 
}); 

Toute aide sera très appréciée. Merci, Aamir

Répondre

0

Dans votre code getMarker, essayez de retourner un StateListDrawable (ce qui correspond à <selector> en XML drawable) qui contient une drawable par défaut (sans états) et un drawable avec l'état android.R.attr.state_focused.

Voir une question connexe ici: Android ListView Selector Color

+0

Toute chance avec cette réponse? N'hésitez pas à suivre. –

+0

Merci Roman. Cela a très bien fonctionné. –