将扩展 ListView 更改为自定义 ListView

Changing extended ListView to Custom ListView

我的 MainActivity 扩展了 ListActivity,但现在我想添加一个 ActionBar 而这个 Activity 应该扩展 ActionBarActivity,为此我需要将扩展 ListView 更改为自定义 ListView。我试过很多次,但都不成功。我该怎么做?

这是我的 MainActivity 代码的一部分:

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

}

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

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

现在,在您的 activity 中,您将内容视图设置为我们在上面创建的布局。接下来,使用 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 });
    }

}