在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
。更改此选项,如果仍然存在任何错误,请通知我。。