Android中怎样用自定义的adapter加载日期列表
想实现以下的效果,因为自己技术大白,不知道怎么处理,贴出代码:
我是用ViewPager + Fragment实现页面切换的,其中在fragmentB中有个按钮button,fragmentA中有个listview,现在想实现的是,通过点击B中的button,在A中的listview中显示一个item,item的名字用当前时间来设置。我用的是自定义的adapter,
private class DateAdapter extends ArrayAdapter<Date_item>
{
private int resourceId;
public DateAdapter(Context context, int dateresourceId, List<Date_item> objects){
super(context, dateresourceId,objects);
resourceId = dateresourceId;
}
@Override
public View getView(int position,View convertView, ViewGroup parent){
Date_item date_item = getItem(position);//获取当前项的date实例
View view;
ViewHolder viewHolder;
if(convertView == null){
view = LayoutInflater.from(getContext()).inflate(resourceId,null);
viewHolder = new ViewHolder();
viewHolder.date = (TextView)view.findViewById(R.id.chart_date);
view.setTag(viewHolder);//将viewHolder缓存到view中
}else {
view = convertView;
viewHolder = (ViewHolder)view.getTag();
}
return view;
}
class ViewHolder{
TextView date;
}
}
我将A中列表的item也设置在了B中:
//列表item的时间形式
//设置时间格式
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd/HH:mm:ss");
//获取当前时间
long time = System.currentTimeMillis();
//将long转化为Date
Date date = new Data(time);
String timeSave = format.format(date);
在B中的button的监听事件里面:
btn.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
DateAdapter dateAdapter =new DateAdapter(getActivity(),R.layout.item_layout,dateList);
listView.setAdapter(dateAdapter);
}
})
程序一运行就闪退,错误是NullPointerException:Attempt to invoke virtual method'void android widget.ListView.setAdapter(android.widget.ListAdapter)'on a null object reference.
请问这是什么情况,这问题困了我很久了,在线等,感谢各位
先说一下,两个Fragment如何进行通信,因为两个Fragment都依赖Activity, 在Activity中设置两个方法,分别是getFragmentA()和getFragmentB(),分别返回FragmentA和FragmentB的对象,在B中要操作A,就是先getActivity,这样就拿到Activity了,就可以再通过Activit去getFragmentA()方法,就可以拿到A对象,拿到A以后再去调用A的方法就好了,这个A你可以写一下添加数据或者刷新列表的方法
把你的那个实现了一下,代码中都写的特别详细,百度云链接http://pan.baidu.com/s/1geIk4mR,自己看吧,加油~
你的问题是两个fragment如何通信,可以使用广播,不推荐使用具体的fragment实例去访问内部对象
从报错上来看 listView 这空;
建议你通过Activity来通信;通过接口监听的方式;