Est-il possible de définir un indice Spinner dans Android

Y a-t-il une occasion de faire un indice pour spinner Je ressemble à un indice, qui est fourni pour éditer des champs de texte. Je sais que vous pouvez utiliser l'invitation qui vous donne une chaîne d'en-tête, mais laisse toujours le champ initial spinner vide jusqu'à ce que vous cliquiez sur spinner. Actuellement, j'ai un moyen grossier d'installer un champ fictif comme première partie de la matrice spinner, qui est une question, puis vérifiez à la fin pour vous assurer que spinner Pas égal à la ligne de question. Y a-t-il un nettoyant / La meilleure façon de le faire?

Remercier!
Invité:

Agathe

Confirmation de:

Voici une solution probablement un peu plus facile que Ravi Vonyas /Merci pour l'inspiration!/:


ArrayAdapter<string> adapter = new ArrayAdapter<string>/getActivity//, android.R.layout.simple_spinner_dropdown_item/ {

@Override
public View getView/int position, View convertView, ViewGroup parent/ {

View v = super.getView/position, convertView, parent/;
if /position == getCount/// {
//TextView/v.findViewById/android.R.id.text1//.setText/""/;
//TextView/v.findViewById/android.R.id.text1//.setHint/getItem/getCount////; //"Hint to be displayed"
}

return v;
}

@Override
public int getCount// {
return super.getCount//-1; // you dont display last item. It is used as hint.
}

};

adapter.setDropDownViewResource/android.R.layout.simple_spinner_dropdown_item/;
adapter.add/"Item 1"/;
adapter.add/"Item 2"/;
adapter.add/"Hint to be displayed"/;

spinner.setAdapter/adapter/;
spinner.setSelection/adapter.getCount///; //display hint


</string></string>

Babette

Confirmation de:

Vous pouvez personnaliser votre propre adaptateur. spinner et remplacer la méthode getView, Pour montrer l'indice au lieu de l'élément . J'ai créé un projet exemplaire sur github , Vérifiez ici

Agathe

Confirmation de:

Un moyen encore plus facile que de configurer votre propre adaptateur. spinner, - Il suffit d'utiliser le bouton et de la styliser comme objet spinner par


android:background="@android:drawable/btn_dropdown"


Puis configurez un événement onClick Boutons pour ouvrir la boîte de dialogue single-item-select. Ensuite, vous pouvez faire ce que vous voulez avec le texte du bouton.

C'était ma façon préférée de faire face à cela depuis un certain temps. J'espère que cela aidera quelqu'un.

EDIT:

J'ai récemment joué à nouveau /Et quelqu'un m'a demandé de publier un exemple il y a quelque temps/. Cette stratégie sera un peu différente si vous utilisez le sujet Holo. Cependant, si vous utilisez d'autres sujets, tels que Theme.Black, Ça va avoir l'air bien.

Pour démontrer cela, j'ai fait une application simple qui a comme ordinaire Spinner, Ainsi et mon bouton d'utilisateur-filateur. Je l'ai jeté dans
https://github.com/sberg413/SpinnerButton
GitHub , Mais à quoi ressemble cette activité:


package com.stevebergamini.spinnerbutton;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Spinner;

public class MainActivity extends Activity {

Spinner spinner1;
Button button1;
AlertDialog ad;
String[] countries;

int selected = -1;

@Override
protected void onCreate/Bundle savedInstanceState/ {
super.onCreate/savedInstanceState/;
setContentView/R.layout.activity_main/;

spinner1 = /Spinner/ findViewById/R.id.spinner1/;
button1 = /Button/ findViewById/R.id.button1/;

countries = getResources//.getStringArray/R.array.country_names/;

// You can also use an adapter for the allert dialog if you'd like
// ArrayAdapter<string> adapter = new ArrayAdapter<string>/this, android.R.layout.simple_spinner_dropdown_item, countries/;

ad = new AlertDialog.Builder/MainActivity.this/.setSingleChoiceItems/countries, selected,
new DialogInterface.OnClickListener// {

@Override
public void onClick/DialogInterface dialog, int which/ {
button1.setText/countries[which]/;
selected = which;
ad.dismiss//;

}}/.setTitle/R.string.select_country/.create//;


button1.setOnClickListener/ new OnClickListener//{

@Override
public void onClick/View v/ {
ad.getListView//.setSelection/selected/;
ad.show//;
}}/;

}
}


</string></string>

Pour répondre aux questions, connectez-vous ou registre