2015-09-30 189 views
0

我試圖做一個應用程序 - 它有3個活動。前兩個是線性佈局的列表視圖,每個列表視圖都不會顯示標題欄。標題欄是指通常位於顯示活動名稱以及選項設置的活動頂部的部分。我的第三個活動不是一個listview,並且正常顯示標題欄,這導致我認爲它可能是我的列表視圖的問題。Android Listview隱藏標題欄

我的第一個頁面的XML是:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
android:orientation="vertical" 
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".SelectClass"> 

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

我的Java類並沒有做太多的顯示器,雖然它設置一個數組適配器和一個onClick監聽器。如果這些是必要的瞭解發生了什麼,然後讓我知道,我會張貼他們。我感謝任何幫助或線索。謝謝!

編輯:第一頁的Java:

package com.example.graeme.dnd5echaracterroller; 

import android.app.ListActivity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.widget.AdapterView; 
import android.widget.ArrayAdapter; 
import android.widget.LinearLayout; 
import android.view.View; 
import android.widget.TextView; 


public class SelectClass extends ListActivity { 

private static String classString; 

public static void setClassString(String classString) { 
    SelectClass.classString = classString; 
} 

public static String getClassString() { 

    return classString; 
} 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_select_class); 

    //Initialize the available class choices 
    final String[] classes = {"Barbarian","Bard","Cleric","Druid", 
    "Fighter","Monk","Paladin","Ranger","Rogue","Sorcerer", 
    "Warlock", "Wizard"}; 
    ArrayAdapter<String> classAdapter = new ArrayAdapter<>(getListView().getContext(), 
      R.layout.classlayout, R.id.classname, classes); 

    getListView().setAdapter(classAdapter); 

    //Set on click listener to get selected class item 
    AdapterView.OnItemClickListener itemClickedHandler = new AdapterView.OnItemClickListener(){ 
     public void onItemClick(AdapterView<?> parent, View v, int position, long id){ 
      //Start a new intent headed to selectRoll, fill it with the class string selected 
      Intent sendClassIntent = new Intent(SelectClass.this, SelectRoll.class); 

      //Each list item has an image, and text 
      //First grab the list item, then grab the text from it 
      LinearLayout ll = (LinearLayout)v; 
      TextView tv = (TextView)(ll).findViewById(R.id.classname); 
      setClassString((String)(tv.getText())); 

      startActivity(sendClassIntent); 
     } 
    }; 
    getListView().setOnItemClickListener(itemClickedHandler); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.menu_select_class, menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle action bar item clicks here. The action bar will 
    // automatically handle clicks on the Home/Up button, so long 
    // as you specify a parent activity in AndroidManifest.xml. 
    int id = item.getItemId(); 

    //noinspection SimplifiableIfStatement 
    if (id == R.id.action_settings) { 
     return true; 
    } 

    return super.onOptionsItemSelected(item); 
} 
} 
+0

請張貼java代碼活動1和活動3 –

回答

1

您應修改您的第一項活動,因爲這結構

public class SelectClass extends AppCompatActivity { 
    ... 
    private ListView mListView; 
    ... 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_select_class); 

     // Initialize the lisview 
     mListView = (ListView) findViewById(R.id.lisview_id); // lisview id 


     //Initialize the available class choices 
     final String[] classes = {"Barbarian","Bard","Cleric","Druid", 
     "Fighter","Monk","Paladin","Ranger","Rogue","Sorcerer", 
     "Warlock", "Wizard"}; 
     ArrayAdapter<String> classAdapter = new ArrayAdapter<> (this, 
       R.layout.classlayout, R.id.classname, classes); // update 

     mListView.setAdapter(classAdapter); 

     ... 

    } 


    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     .... 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     ..... 
    } 
    } 

而且在第一個活動的ListView的

<ListView 
android:id="@+id/lisview_id" // use this id for initialize listview 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 

希望這有助於

+0

我很欣賞評論。不幸的是,它拋出了一個「java.lang.RuntimeException:如果我將它保存爲ListActivity並且它告訴我它無法解析,那麼您的內容必須具有List屬性爲'android.R.id.list'的ListView」方法'getListView()'如果我將它更改爲AppCompatActivity。 – WarSame

+0

@WarSame我修改了代碼。請檢查一下。確保你像我一樣改變一切。 –

+0

它完美的作品!感謝您的幫助,以及您非常快速的回覆。你能向我解釋爲什麼id和聲明的改變使它在沒有以前的地方工作嗎? – WarSame

0

我認爲這個問題是不是ListView中,通常是因爲你已經在你的清單中設置樣式牆根。這是你在裏面的manifest.xml的主要活動:

<activity 
      android:name=".MainActivity" 
      android:label="@string/app_name" 
      android:theme="@style/AppTheme" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
</activity> 

上的ListView活動android:theme="@style/AppTheme"必須設置爲表明「標題欄」的Apptheme。

希望這有助於

+0

感謝您的評論!我已經在我的清單文件中聲明瞭這個主題,但爲了確保我特別聲明瞭我的第一個活動,但它根本沒有幫助。不過謝謝你。 – WarSame