2015-04-29 22 views
1

MainActivity延伸ListActivity,但現在我想補充一個ActionBarActivity應該擴展ActionBarActivity,要做到這一點,我需要改變擴展ListView到自定義ListView。我嘗試了很多次,但沒有成功。我該怎麼做?改變擴展的ListView爲自定義的ListView

這裏是我的MainActivity代碼的一部分:一切你擁有的onCreate內之前

public class MainActivity extends ListActivity { 
. 
. 
. 
// Hashmap for ListView 
ArrayList<HashMap<String, String>> testList; 

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
    testList = new ArrayList<HashMap<String, String>>(); 
     ListView lv = getListView(); 
} 

@Override 
    protected void onPostExecute(Void result) { 
     super.onPostExecute(result); 
     // Dismiss the progress dialog 
     if (pDialog.isShowing()) 
      pDialog.dismiss(); 

    /** 
     * Updating parsed JSON data into ListView 
     * */ 
     ListAdapter adapter = new SimpleAdapter(
       MainActivity.this, testList, 
       R.layout.list_item, new String[] { TAG_NAME, TAG_DESCRICAO }, new int[] { R.id.name, 
       R.id.descricao }); 

     setListAdapter(adapter); 
    } 

} 
+0

ListActivity是一個嵌入式的ListView,如果不延長listactivity不要指望方法,而不是使用findViewById並定位到ListView控件 – Elltz

回答

0

是的,繼續並擴展ActionBarActivity。然後,在佈局文件中定義您的ListView。例如,您的佈局將是這個樣子:現在

<RelativeLayout 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:paddingBottom="@dimen/activity_vertical_margin"> 

     <ListView 
      android:id="@+id/lv_list" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent"> 
     </ListView> 
</RelativeLayout> 

,在您的活動,您設置的內容以我們上面創建的佈局。接下來,通過findViewById獲取對ListView的引用。最後,將您的適配器綁定到ListView。順便說一下,ArrayAdapter可能更適合你。

代碼:

public class ListTestActivity extends ActionBarActivity { 

    ListView mListView; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_list_test); 
     mListView = (ListView) findViewById(R.id.lv_list); 
     mListView.setAdapter(new SimpleAdapter(
      MainActivity.this, testList, 
      R.layout.list_item, new String[] { TAG_NAME, TAG_DESCRICAO }, new int[] { R.id.name, 
      R.id.descricao }); 
    } 

} 
+1

謝謝你的男人。有效。 – Alan

0

嘗試包括super.onCreate(savedInstanceState)。

+0

好getlistview返回活動的列表視圖的活動。但這不是問題。當我將「擴展ListActivity」更改爲「擴展ActionBarActivity」這一行「ListView lv = getListView();」不起作用。 – Alan