2013-08-30 16 views
11

Ciao così ho creato una lista e voglio aggiungere la barra delle azioni. Sono abbastanza nuovo per Android, quindi mi piacerebbe sapere come aggiungere la barra delle azioni durante l'utilizzo di ListActivity. Qualsiasi aiuto sarà apprezzato. Grazie Il mio codice:Aggiunta di una barra delle azioni a listactivity

 public class MainActivity extends ListActivity { 

    ArrayList<Item> items = new ArrayList<Item>(); 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 


     items.add(new SectionItem("2x2 Matrices")); 
     items.add(new EntryItem("Adding 2 Matrices")); 
     items.add(new EntryItem("Subtracting 2 Matrices")); 
     items.add(new EntryItem("Multiplying 2 Matrices")); 
     items.add(new EntryItem("Multiplying by a constant")); 
     items.add(new EntryItem("Dividing 2 Matrices")); 
     items.add(new EntryItem("Negative of a Matrix")); 
     items.add(new EntryItem("Inverse of a Matrix")); 
     items.add(new EntryItem("Determinant of a Matrix")); 

     /*Section2*/ 
     items.add(new SectionItem("3x3 Matrices")); 
     items.add(new EntryItem("Item 4")); 
     items.add(new EntryItem("Item 5")); 
     items.add(new EntryItem("Item 6")); 
     items.add(new EntryItem("Item 7")); 
     /*Section3*/ 
     items.add(new SectionItem("Category 3")); 
     items.add(new EntryItem("Item 8")); 
     items.add(new EntryItem("Item 9")); 
     items.add(new EntryItem("Item 10")); 
     items.add(new EntryItem("Item 11")); 
     items.add(new EntryItem("Item 12")); 

     EntryAdapter adapter = new EntryAdapter(this, items); 

     setListAdapter(adapter); 
    } 

} 

risposta

5

Poi, nel onCreateOptionsMenu della vostra attività() il metodo, gonfiare la risorsa di menu in data Menu per aggiungere ogni elemento alla barra delle azioni:

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu items for use in the action bar 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.main_activity_actions, menu); 
    return super.onCreateOptionsMenu(menu); 
} 

More info for action bar

+3

Questo non funziona per me su Android 4.4.2. Sto usando ListActivity con lo stile 'android: Theme.Holo.Light.DarkActionBar'. – Daniel

7

È possibile utilizzare i temi Holo, è necessario solo in questa schermata?

In manifest Android:

Per una sola schermata, messo atribute tema come questo:

<activity 
android:theme="@android:style/Theme.Holo.Light.DarkActionBar"> 
</activity> 

Per tutto schermo, messo atribute tema tag applicazione.

<application 
android:theme="@style/My_Theme" > 

Inoltre è possibile creare un tema personalizzato basato su Holo Light Theme.

Es:

android:theme="@style/My_Theme" > 

In styles.xml

<style name="My_Theme" parent="@android:style/Theme.Holo.Light.NoActionBar"></style> 
12

Nome Assicurarsi che il minimo Android API-14 or later.

Poi, aggiungi android:theme="@android:style/Theme.Holo.Light.DarkActionBar" sotto la classe ListView_Activity in AndroidManifest.xml.

Esempio

 <activity android:name=".Your_ListView_Activity" 
        android:theme="@android:style/Theme.Holo.Light.DarkActionBar" 
        android:label="ListView_Activity_Label"> 
5

Ecco un buon modo:

Nel file di layout: activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" > 

<ListView 
    android:id="@+id/list" 
    android:layout_height="wrap_content" 
    android:layout_width="match_parent"> 
</ListView> 

Ora per la vostra attività:

public class MainActivity extends ActionBarActivity 
{ 
    private ListView listView; 
    private ListAdapter myAdapter; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     listView = (ListView) findViewById(R.id.list); 
     myAdapter = new ListAdapter(getApplicationContext()); 
     listView.setAdapter(myAdapter); 

Buona fortuna!

+0

Non credo myAdapter = new ListAdapter (getApplicationContext()); funziona perché non è possibile creare un'istanza della classe ListAdapter astratta. –

+0

In realtà ListAdapter è una classe personalizzata che implementa BaseAdapter. Ecco la firma "public class ListAdapter estende BaseAdapter" Così puoi creare un oggetto dalla classe ListAdapter e questo oggetto ha le funzionalità di BaseAdapter + i tuoi metodi personalizzati –

0

ListActivity non è stato portato su AppCompat. Probabilmente perché dovresti considerarlo 'deprecated', e invece usare un ListFragment.

Frammenti lavorerà con un ActionBarActivity, basta assicurarsi che siano frammenti della libreria di supporto.

Leggere questo collegamento sui frammenti.

Per il tuo caso d'uso, vorrei semplicemente definire il frammento in xml.

Problemi correlati