在Android中创建简单的ListView
这是我的在Android中创建简单的ListView,android,xml,listview,Android,Xml,Listview,这是我的菜单片段。在这里我有列表视图,这里没有任何错误 package info.androidhive.tabsswipe; import dk.appografen.joeandthejuice.R; import java.util.ArrayList; import java.util.Arrays; import android.support.v4.app.Fragment; import android.os.Bundle; import android.view
菜单片段
。在这里我有列表视图
,这里没有任何错误
package info.androidhive.tabsswipe;
import dk.appografen.joeandthejuice.R;
import java.util.ArrayList;
import java.util.Arrays;
import android.support.v4.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class MenuFragment extends Fragment{
private ListView mainListView ;
private ArrayAdapter<String> listAdapter ;
View rootView;
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
super.onCreateView(inflater, container, savedInstanceState);
rootView = inflater.inflate(R.layout.menukort, container,
false);
return rootView;
}
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
// Find the ListView resource.
mainListView = (ListView) rootView.findViewById( R.id.mainListView );
// Create and populate a List of planet names.
String[] planets = new String[] { "Mercury", "Venus", "Earth", "Mars",
"Jupiter", "Saturn", "Uranus", "Neptune"};
ArrayList<String> planetList = new ArrayList<String>();
planetList.addAll( Arrays.asList(planets) );
// Create ArrayAdapter using the planet list.
getActivity();
// Add more planets. If you passed a String[] instead of a List<String>
// into the ArrayAdapter constructor, you must not add more items.
// Otherwise an exception will occur.
listAdapter.add( "Ceres" );
listAdapter.add( "Pluto" );
listAdapter.add( "Haumea" );
listAdapter.add( "Makemake" );
listAdapter.add( "Eris" );
// Set the ArrayAdapter as the ListView's adapter.
mainListView.setAdapter( listAdapter );
}
}
package info.androidhive.tabsswipe;
进口dk.appografen.joeandthejuice.R;
导入java.util.ArrayList;
导入java.util.array;
导入android.support.v4.app.Fragment;
导入android.os.Bundle;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.ArrayAdapter;
导入android.widget.ListView;
公共类MenuFragment扩展了片段{
私有ListView主ListView;
专用阵列适配器列表适配器;
视图根视图;
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
super.onCreateView(充气机、容器、保存状态);
根视图=充气机。充气(R.layout.menukort,容器,
假);
返回rootView;
}
已创建视图上的公共void(视图,捆绑保存状态){
super.onViewCreated(视图,savedInstanceState);
//查找ListView资源。
mainListView=(ListView)rootView.findviewbyd(R.id.mainListView);
//创建并填充行星名称列表。
字符串[]行星=新字符串[]{“水星”、“金星”、“地球”、“火星”,
“木星”、“土星”、“天王星”、“海王星”};
ArrayList planetList=新的ArrayList();
planetList.addAll(Arrays.asList(planets));
//使用行星列表创建ArrayAdapter。
getActivity();
//添加更多行星。如果传递的是字符串[]而不是列表
//在ArrayAdapter构造函数中,不能添加更多项。
//否则将发生异常。
添加(“Ceres”);
添加(“Pluto”);
添加(“Haumea”);
添加(“Makemake”);
添加(“Eris”);
//将ArrayAdapter设置为ListView的适配器。
mainListView.setAdapter(listAdapter);
}
}
我看到您扩展了活动
,而不是扩展片段
。您需要做的第一件事是将此行public class menuframent extends活动
更改为public class menuframent extends Fragment
。现在,以下步骤有点复杂,因为您必须将部分代码移动到onCreateView()
方法,并将部分代码从onCreate
方法移动到onViewCreated
。首先,我想用下面的方法在您的onCreateView
方法中执行此操作:使用LayoutInflater膨胀片段,然后在onViewCreated
方法中执行所有其他操作,例如设置适配器、实例化小部件或子视图(listview、gridview等)。您的代码看起来有点像下面的代码
package info.androidhive.tabsswipe;
import dk.appografen.joeandthejuice.R;
import java.util.ArrayList;
import java.util.Arrays;
import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class MenuFragment extends Fragment{
private ListView mainListView ;
private ArrayAdapter<String> listAdapter ;
View rootView;
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
super.onCreateView(inflater, container, savedInstanceState);
rootView = inflater.inflate(R.layout.menukort, container,
false);
return rootView;
}
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
// Find the ListView resource.
mainListView = (ListView) rootView.findViewById( R.id.mainListView );
// Create and populate a List of planet names.
String[] planets = new String[] { "Mercury", "Venus", "Earth", "Mars",
"Jupiter", "Saturn", "Uranus", "Neptune"};
ArrayList<String> planetList = new ArrayList<String>();
planetList.addAll( Arrays.asList(planets) );
// Create ArrayAdapter using the planet list.
listAdapter = new ArrayAdapter<String>(this, R.layout.simplerow, planetList);
// Add more planets. If you passed a String[] instead of a List<String>
// into the ArrayAdapter constructor, you must not add more items.
// Otherwise an exception will occur.
listAdapter.add( "Ceres" );
listAdapter.add( "Pluto" );
listAdapter.add( "Haumea" );
listAdapter.add( "Makemake" );
listAdapter.add( "Eris" );
// Set the ArrayAdapter as the ListView's adapter.
mainListView.setAdapter( listAdapter );
}
}
package info.androidhive.tabsswipe;
进口dk.appografen.joeandthejuice.R;
导入java.util.ArrayList;
导入java.util.array;
导入android.app.Activity;
导入android.os.Bundle;
导入android.widget.ArrayAdapter;
导入android.widget.ListView;
公共类MenuFragment扩展了片段{
私有ListView主ListView;
专用阵列适配器列表适配器;
视图根视图;
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
super.onCreateView(充气机、容器、保存状态);
根视图=充气机。充气(R.layout.menukort,容器,
假);
返回rootView;
}
已创建视图上的公共void(视图,捆绑保存状态){
super.onViewCreated(视图,savedInstanceState);
//查找ListView资源。
mainListView=(ListView)rootView.findviewbyd(R.id.mainListView);
//创建并填充行星名称列表。
字符串[]行星=新字符串[]{“水星”、“金星”、“地球”、“火星”,
“木星”、“土星”、“天王星”、“海王星”};
ArrayList planetList=新的ArrayList();
planetList.addAll(Arrays.asList(planets));
//使用行星列表创建ArrayAdapter。
listAdapter=new ArrayAdapter(这个,R.layout.simplerow,planetList);
//添加更多行星。如果传递的是字符串[]而不是列表
//在ArrayAdapter构造函数中,不能添加更多项。
//否则将发生异常。
添加(“Ceres”);
添加(“Pluto”);
添加(“Haumea”);
添加(“Makemake”);
添加(“Eris”);
//将ArrayAdapter设置为ListView的适配器。
mainListView.setAdapter(listAdapter);
}
}
Hi。我已经试过你说的话了,并且输入了我需要的东西。现在我得到了一个错误:listAdapter=newarrayadapter(这个,R.layout.simplerow,planetList);说明:构造函数ArrayAdapter(MenuFragment、int、ArrayList)未定义,请将this
更改为getActivity()
,然后重试。让我知道它是否有效。getActivity()修复了错误。但在我的TabsPagerAdapter中,我仍然得到错误:returnnewMenuFragment();像以前一样?您正在使用支持库吗?好像是appcompat-v7还是v4?如果是,那么您需要导入import android.support.v4.app.Fragment
而不是import android.app.Fragment
ok我看到您正在使用TabsPagerAdapter,所以您必须使用appcompat支持库,在这种情况下,您的所有片段都需要导入android.support.v4.app.Fragment
。更改此选项,如果仍然存在任何错误,请通知我。。