2015-04-29 24 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