Jak mohu vytvořit ikony pro položky menu v Android ListView?

hlasů
21

Já používám ListViewpro zobrazení hlavní obrazovku mé žádosti.
Hlavní obrazovka je v podstatě menudostat do různých částí aplikace. V současné době mám ListView, jehož obsah je přidán programově v onCreatemetodě.

Zde je fragment kódu, který dělá toto:

String[] mainItems = {
    Inbox, Projects, Contexts, Next Actions
}

@Override
public void onCreate(Bundle icicle) {
    super.onCreate(icicle);
    setContentView(R.layout.main);

    setListAdapter(new ArrayAdapter<String>(
            this, android.R.layout.simple_list_item_1, mainItems));
    registerForContextMenu(getListView());
}

Takže v nabídce je v podstatě jen banda uzlů se text obsažený v poli mainItems. Vím, že můžu vytvořit rozvržení XML (tj R.layout.mainMenu_item), který má ImageView a TextView v něm, ale já jsem si nejste jisti, jak nastavit ikonu ImageView je. Viděl jsem, že existuje způsob setImageResouce (int RESID), ale způsob, jak používat to při generování s ArrayAdapter se mi uniká. Existuje lepší způsob, jak to udělat?

Položena 13/11/2008 v 20:56
zdroj uživatelem
V jiných jazycích...                            


2 odpovědí

hlasů
16

To, co jsem obvykle udělat pro ListView je realizovat svůj vlastní adaptér rozšířením šikovný třídu BaseAdapter. Jedním z abstraktních metod budete realizovat bude getView () jako předchozí plakát zmínil. Odtud můžete nafouknout rozvržení obsahující ImageView, získat odkaz na něj pomocí findViewById a nastavte obraz na cokoliv tažné, přidáte do svých zdrojů.

public View getView(int position, View convertView, ViewGroup parent) {

    View row = inflater.inflate(R.layout.menu_row, null);

     ImageView icon = (ImageView) row.findViewById(R.id.icon);
     icon.setImageResource(..your drawable's id...);

     return view;
}
Odpovězeno 03/12/2008 v 23:46
zdroj uživatelem

hlasů
1

Z Google Docs pro ArrayAdapter.

Chcete-li něco jiného než TextViews na displeji pole, například ImageViews, nebo některé z údajů kromě toString () výsledky naplnit názory, přepsat getView (int, Výhled, ViewGroup) pro návrat typ zobrazení, které chcete.

Odpovězeno 27/11/2008 v 00:43
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more