Android 使用片段实例生成GridView
我想实现GridView,使每个单元格都包含一个类的对象。为此,我实现了片段类:Android 使用片段实例生成GridView,android,gridview,android-fragments,Android,Gridview,Android Fragments,我想实现GridView,使每个单元格都包含一个类的对象。为此,我实现了片段类: public class DayUC extends Fragment { /* some variables */ // use to create instance of class with initial parameters public static DayUC newInstance(//initial parameters) { DayUC
public class DayUC extends Fragment {
/*
some variables
*/
// use to create instance of class with initial parameters
public static DayUC newInstance(//initial parameters) {
DayUC dayUC = new DayUC();
/*
set parameters
*/
return dayUC;
}
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
rootView = inflater.inflate(R.layout.fragment_layout, container, false);
initialization() //initial variables and view elemans (textView, ...)
return rootView;
}
}
我还创建了GridViewAdapter:
public class GridViewAdapter extends BaseAdapter {
private ArrayList<DayUC> gridList; //list of grid DayUC objects
Context context;
public GridViewAdapter(Context context, ArrayList<DayUC> gridList) {
this.gridList = gridList;
this.context = context;
}
@Override
public int getCount() {
return gridList.size();
}
@Override
public DayUC getItem(int position) {
return gridList.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
return gridList.get(position).getView();
}
}
公共类GridViewAdapter扩展了BaseAdapter{
私有ArrayList gridList;//网格对象列表
语境;
公共GridViewAdapter(上下文上下文,ArrayList gridList){
this.gridList=gridList;
this.context=上下文;
}
@凌驾
public int getCount(){
返回gridList.size();
}
@凌驾
公共DayUC getItem(内部位置){
返回gridList.get(位置);
}
@凌驾
公共长getItemId(int位置){
返回位置;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
返回gridList.get(position.getView();
}
}
但当我创建GridView时,它会抛出NullPointerException!我发现在gridView元素(DayUC)中,onCreateView()从未调用。所以gridList.get(position).getView()返回null
有人能帮我解决这个问题吗?我怎样才能强制调用onCreateView
编辑:添加了MainActivity onCreate方法:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
DayUC[] dayUC = new DayUC[42];
monthGridView = (GridView) findViewById(R.id.month_view);
for (int i = 0; i < 42; i++) {
dayUC[i] = DayUC.newInstance(//inpute arguments)
dayUCList.add(dayUC[i]);
monthCal.add(Calendar.DATE, 1);
}
gridViewAdapter = new MonthGridViewAdapter(getActivity(), dayUCList);
monthGridView.setAdapter(gridViewAdapter);
gridViewAdapter.notifyDataSetChanged();
}
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
DayUC[]DayUC=新的DayUC[42];
monthGridView=(GridView)findViewById(R.id.month\u视图);
对于(int i=0;i<42;i++){
dayUC[i]=dayUC.newInstance(//输入参数)
dayUCList.add(dayUC[i]);
添加月份(日历日期,1);
}
gridViewAdapter=newmonthGridViewAdapter(getActivity(),dayUCList);
setAdapter(gridViewAdapter);
gridViewAdapter.notifyDataSetChanged();
}
初始化ArrayList gridList的位置?为什么要在ArrayList中存储DayUC
片段对象?在OnCreateView中添加gridview(rootview.findviewbyid(gridviewid))并设置适配器或添加初始化()方法,以便找到合适的错误。如果您的代码完全错误,您需要阅读GridView
和Fragment
文档才能正确移动。@Nag:在我的主要活动中