将扩展 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 });
}
}
我的 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 });
}
}