Android 将扩展ListView更改为自定义ListView

Android 将扩展ListView更改为自定义ListView,android,android-listview,Android,Android Listview,我的main活动扩展了ListActivity,但现在我想添加一个ActionBar,这个活动应该扩展ActionBarActivity,为此我需要将扩展的ListView更改为自定义的ListView。我试了很多次,但都没有成功。我怎么做 这是我的主要活动代码的一部分: public class MainActivity extends ListActivity { . . . // Hashmap for ListView ArrayList<HashMap<String, St

我的
main活动
扩展了
ListActivity
,但现在我想添加一个
ActionBar
,这个
活动
应该扩展
ActionBarActivity
,为此我需要将扩展的
ListView
更改为自定义的
ListView
。我试了很多次,但都没有成功。我怎么做

这是我的主要活动代码的一部分:

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);
    }   

}
public类MainActivity扩展了ListActivity{
.
.
.
//ListView的Hashmap
ArrayList测试列表;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
testList=newarraylist();
ListView lv=getListView();
}
@凌驾
受保护的void onPostExecute(void结果){
super.onPostExecute(结果);
//关闭进度对话框
if(pDialog.isShowing())
pDialog.disclose();
/**
*将解析的JSON数据更新到ListView中
* */
ListAdapter=新的SimpleAdapter(
MainActivity.this、testList、,
R.layout.list_项,新字符串[]{TAG_NAME,TAG_descripcao},新int[]{R.id.NAME,
R.id.descripcao});
setListAdapter(适配器);
}   
}

尝试将super.onCreate(savedInstanceState)包含在onCreate中的所有内容之前。

是的,继续并扩展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>

好啊但这不是问题所在。当我将“extends ListActivity”更改为“extends ActionBarActivity”时,这一行“ListView lv=getListView();”不起作用。ListActivity是一个嵌入ListView的活动,如果您不扩展ListActivity,getListView将返回该活动的ListView。不要期望使用该方法,而是使用findViewById并定位到ListView小部件
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 });
    }

}