Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/107.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 当我在内部使用listview时,片段显示时间太长_Android_Fragment - Fatal编程技术网

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;
}