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