Android 当我在内部使用listview时,片段显示时间太长
这是我的片段类:Android 当我在内部使用listview时,片段显示时间太长,android,fragment,Android,Fragment,这是我的片段类: public class FragmentDdayMonthly extends Fragment { ListView lvFrequency; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layo
public class FragmentDdayMonthly extends Fragment {
ListView lvFrequency;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_dday_monthly, container, false);
ArrayList<MonthlyModel> monthlyModels = new ArrayList<MonthlyModel>();
monthlyModels.add(null);
lvFrequency = (ListView) view.findViewById(R.id.list_frequency);
DDayMonthlyListAdapter adapter = new DDayMonthlyListAdapter(getActivity(),monthlyModels,lvFrequency);
lvFrequency.setAdapter(adapter);
return view;
}
public类fragmentddamently扩展了Fragment{
列表视图频率;
@凌驾
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
视图=充气机。充气(R.layout.fragment\u dday\u monthly,container,false);
ArrayList monthlyModels=新的ArrayList();
月模型添加(空);
lvFrequency=(ListView)view.findViewById(R.id.list\u frequency);
DDayMonthlyListAdapter=新的DDayMonthlyListAdapter(getActivity(),monthlyModels,lvFrequency);
lvFrequency.setAdapter(适配器);
返回视图;
}
这是适配器:
public class DDayMonthlyListAdapter extends BaseAdapter implements View.OnClickListener {
private Context mContext;
private ArrayList<MonthlyModel> monthlyModels;
ListView listView;
public DDayMonthlyListAdapter(Context context,ArrayList<MonthlyModel> monthlyModels, ListView listView) {
this.mContext = context;
this.monthlyModels = monthlyModels;
this.listView = listView;
}
public int getCount() {
return monthlyModels.size();
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// inflate the GridView item layout
LayoutInflater inflater = LayoutInflater.from(mContext);
convertView = inflater.inflate(R.layout.item_monthly_list, parent, false);
return convertView;
}
公共类DDayMonthlyListAdapter扩展BaseAdapter实现View.OnClickListener{
私有上下文;
私人ArrayList月模型;
列表视图列表视图;
公共DDayMonthlyListAdapter(上下文上下文、ArrayList monthlyModels、ListView ListView){
this.mContext=上下文;
this.monthlyModels=monthlyModels;
this.listView=listView;
}
public int getCount(){
返回monthlyModels.size();
}
@凌驾
公共对象getItem(int位置){
返回null;
}
@凌驾
公共长getItemId(int位置){
返回0;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
//展开GridView项布局
LayoutFlater充气机=LayoutFlater.from(mContext);
convertView=充气机。充气(R.layout.item\u每月\u列表,父项,false);
返回视图;
}
Layoutfragment\u dday\u monthly只需一个Listview。下面是Listview项目的布局(R.Layout.item\u monthly\u list):
正如您所看到的,我只是将视图膨胀到片段。我不做任何繁重的任务,但片段加载太长,需要1-2秒才能显示。请帮助我修复它!在onCreateView中设置适配器而不是膨胀,在
onViewCreated()
方法中执行这些操作
public class FragmentDdayMonthly extends Fragment {
ListView lvFrequency;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_dday_monthly, container, false);
ArrayList<MonthlyModel> monthlyModels = new ArrayList<MonthlyModel>();
monthlyModels.add(null);
lvFrequency = (ListView) view.findViewById(R.id.list_frequency);
DDayMonthlyListAdapter adapter = new DDayMonthlyListAdapter(getActivity(),monthlyModels,lvFrequency);
lvFrequency.setAdapter(adapter);
return view;
}
}
public类fragmentddamently扩展了Fragment{
列表视图频率;
@凌驾
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
视图=充气机。充气(R.layout.fragment\u dday\u monthly,container,false);
ArrayList monthlyModels=新的ArrayList();
月模型添加(空);
lvFrequency=(ListView)view.findViewById(R.id.list\u frequency);
DDayMonthlyListAdapter=新的DDayMonthlyListAdapter(getActivity(),monthlyModels,lvFrequency);
lvFrequency.setAdapter(适配器);
返回视图;
}
}
像这样
public class FragmentDdayMonthly extends Fragment {
ListView lvFrequency;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_dday_monthly, container, false);
return view;
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
ArrayList<MonthlyModel> monthlyModels = new ArrayList<MonthlyModel>();
monthlyModels.add(null);
lvFrequency = (ListView) view.findViewById(R.id.list_frequency);
DDayMonthlyListAdapter adapter = new DDayMonthlyListAdapter(getActivity(),monthlyModels,lvFrequency);
lvFrequency.setAdapter(adapter);
}
}
public类fragmentddamently扩展了Fragment{
列表视图频率;
@凌驾
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
视图=充气机。充气(R.layout.fragment\u dday\u monthly,container,false);
返回视图;
}
@凌驾
已创建视图上的公共void(视图,@Nullable Bundle savedInstanceState){
ArrayList monthlyModels=新的ArrayList();
月模型添加(空);
lvFrequency=(ListView)view.findViewById(R.id.list\u frequency);
DDayMonthlyListAdapter=新的DDayMonthlyListAdapter(getActivity(),monthlyModels,lvFrequency);
lvFrequency.setAdapter(适配器);
}
}
不需要将Arraylist传递给DDayMonthlyListAdapter,因为在您的情况下不需要这样做
您还应修改代码,如下所示:
public int getCount() {
return 0;
}
@Override
public Object getItem(int position) {
return position;
}
这必须作为解决方案!>..你的列表中有多少项?不确定,但这是一个大的布局,它有任何大的图像吗?@Fakher我只是添加了一个空项来膨胀视图,正如你在onCreateView中看到的那样。Yazan没有,我只有一个像微调器箭头一样的小箭头图像。如果你删除
列表视图
适配器代码,它工作正常吗?是的,当然工作正常,但它只是显示一个空白页面。然后我想你在适配器类中有一些问题。是布局项\u每月\u列表太大吗?你发布了吗?
public int getCount() {
return 0;
}
@Override
public Object getItem(int position) {
return position;
}