5

Hallo, ich habe zwei TabHost s in der Activity hinzugefügt und es funktioniert gut. Ich habe eine andere XML-Datei mit ListView hinzugefügt und in der Activity aufgerufen, wo ich die Tabhost verwende. Es gibt Fehler wie erwartet, aber ich habe viel versucht, konnte es aber nicht lösen. Könnte mir jemand eine Idee dazu geben, wie man ListView und TabHost beide in einem Activity verwaltet? Ich habe keinen Code geschrieben, da er hauptsächlich aus Tutorials besteht. Jede Hilfe wäre willkommen. Vielen Dank. schwerwiegender Fehler ist „Ihre Inhalte ein TabHost Attribut, dessen ID haben muss, ist‚android.R.id.tabhost‘“Listview auf Rleft Seite und Tabhost auf der rechten Seite mit 20:80 Bildschirm teilen Verhältnis

+1

ja, die Fehler selbst zu erklären, dass Ihre TabHost die id "TabHost" haben muss. Wenn Sie Diff-ID in der Layout-Datei angegeben haben, stürzt es ab. – akkilis

+0

Ja, das habe ich verstanden, und die ID wie folgt gesetzt, ich hoffe, ich bin richtig Android: id = "@ android: id/tabhost" –

Antwort

0

Probenaktivität mit Tabs und Listviews mit Karo Artikel:

ich unten geschrieben eine Probenaktivität, die eine TabHost enthält, die 3 Tabs und zwei ListView, eine in jeder tab1 und tab3 aufweist. Ich verwende eine ArrayList, um meine ArrayAdapter zu initialisieren, von der ich meine ListView verknüpfen kann. Ich füge dann Elemente zum tab3ListView hinzu, nachdem es über seine ArrayList, tab3List eingerichtet wurde. Beachten Sie, dass die Elemente von tab3ListView über ein entsprechendes Kontrollkästchen verfügen. Beachten Sie, dass heutzutage einige Leute ActionBar.Tabs als TabHost bevorzugen, aber ich finde diesen Weg einfacher.

XML-Datei:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" > 

<TabHost 
    android:id="@+id/tabhost" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" > 

    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:orientation="vertical" 
     android:padding="5dp" > 

     <TabWidget 
      android:id="@android:id/tabs" 
      android:layout_width="fill_parent" 
      android:layout_height="70dp" 
      android:layout_marginBottom="-4dp" 
      android:layout_weight="0" > 
     </TabWidget> 
     <FrameLayout 
      android:id="@android:id/tabcontent" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:padding="0dp" 
      android:layout_weight="1"> 
      <LinearLayout 
       android:id="@+id/tab1" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:orientation="vertical"> 
      <ListView 
       android:id="@+id/tab1List" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:fastScrollEnabled="true"></ListView> 
      </LinearLayout> 

      <LinearLayout 
       android:id="@+id/tab2" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent" 
       android:orientation="vertical" > 
      <EditText 
       android:id="@+id/tab2Edit1" 
       android:layout_width="fill_parent" 
       android:layout_height="40dp" 
       android:hint="Enter text here"/> 
      </LinearLayout> 

      <LinearLayout 
       android:id="@+id/tab3" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:orientation="horizontal" > 
      <ListView 
       android:id="@+id/tab3List" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:fastScrollEnabled="true"></ListView> 
      </LinearLayout> 
     </FrameLayout> 
    </LinearLayout> 
</TabHost> 
</LinearLayout> 

Hauptaktivität:

public class MainActivity extends Activity{ 

// TabHost 
TabHost th; 
LinearLayout tab1, tab2, tab3; 

// ListView 
ListView tab1ListView, tab3ListView; 

// String list 
String stringList[] = {"Paris", "Washington", "Amsterdam", "London", "Bale", "Madrid", 
     "Zurich", "Munich", "Berlin", "Milan", "Rome", "Turin", "Lyon", "Marseille"}; 

// Adapters 
ArrayList<String> tab1List, tab3List; 
ArrayAdapter<String> tab1Adapter, tab3Adapter; 

// Others 
EditText tab2Edit1; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // Initialize Layout 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    // Initialize Tabs 
    th = (TabHost) findViewById(R.id.tabhost); 
    th.setup(); 
    // Tab1 
    TabSpec spec1 = th.newTabSpec("tag1"); 
    spec1.setContent(R.id.tab1); 
    spec1.setIndicator("Tab 1"); 
    th.addTab(spec1); 
    // Tab2 
    TabSpec spec2 = th.newTabSpec("tag2"); 
    spec2.setContent(R.id.tab2); 
    spec2.setIndicator("Tab 2"); 
    th.addTab(spec2); 
    // Tab3 
    TabSpec spec3 = th.newTabSpec("tag3"); 
    spec3.setContent(R.id.tab3); 
    spec3.setIndicator("Tab 3"); 
    th.addTab(spec3); 

    //Initialize Adapter and ListView from Tab1 
    tab1ListView = (ListView) findViewById(R.id.tab1List); 
    tab2Edit1 = (EditText) findViewById(R.id.tab2Edit1); 
    tab1List = new ArrayList<String>(Arrays.asList(stringList)); 
    tab1Adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, tab1List); 
    tab1ListView.setAdapter(tab1Adapter); 

    //Initialize Adapter and ListView from Tab3 
    tab3ListView = (ListView) findViewById(R.id.tab3List); 
    tab3List = new ArrayList<String>(Arrays.asList(stringList)); 
    tab3Adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_multiple_choice, tab3List); 
    tab3ListView.setAdapter(tab3Adapter); 
    tab3ListView.setFocusable(false); 
    tab3ListView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); 

    // Modify ListView: modify ArrayList and call notifyDataSetChanged() from corresponding adapter 
    tab3List.add(0,"New item at location 0"); 
    tab3List.add(3,"New item at location 3"); 
    tab3List.add("New item at location end"); 
    tab3Adapter.notifyDataSetChanged(); 

    tab3ListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, 
       long arg3) { 
      // Set what happenss when you check or uncheck an item here 
     } 

    }); 
} 
Verwandte Themen