listView显示不出来

时间:2021-06-02 08:43:03
看起来特别简单的一个PullToRefreshListView,不知道为什么出不来数据,求解


//这是在一个fragment里面的下拉刷新listview 
//java代码
@BindView(R.id.word_pullListView)
    PullToRefreshListView listView;

       nums = new ArrayList<>();
        for (int i = 0; i < 20; i++) {
            nums.add(i + "");
        }
        ArrayAdapter adapter = new ArrayAdapter<>(getContext(), android.R.layout.simple_list_item_1, android.R.id.text1, nums);
        listView.setAdapter(adapter);

//布局代码
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:background="@color/color_blue"
              android:layout_width="match_parent"
              android:layout_height="match_parent">

    <com.handmark.pulltorefresh.library.PullToRefreshListView
        android:id="@+id/word_pullListView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
</LinearLayout>

这里我设置了蓝色背景,但是出来的效果是什么都没有.

11 个解决方案

#1


第一次论坛发帖求大神帮忙

#2


蓝色背景也没有?不可能吧?

#3


listView显示不出来
效果一直是这样,也没有报错

#4


我去 图片有点大 sorry

#5


还有你的adapter 是不是写的有问题?我觉得你写那个R.id.text1应该是没必要了,直接ArrayAdapter<String> adapter = new ArrayAdapter<String>(context,android.R.layout.simple_list_item_1,num);就可以了,还有我不知道你的框架是怎么弄的,但我知道在fragment中应该是用getActivtiy来获取context的,而不是用getContext()吧!

#6


引用 3 楼 Mark_ZN 的回复:
listView显示不出来
效果一直是这样,也没有报错

你的这个是用viewPager做的吧!你确定你设置了viewPager的Adapter 和页面吗?  

#7





//这是用于收藏的fragment
public class WordCollectFragment extends BaseFragment {


    @BindView(R.id.sc_wz_lv)
    ListView listView;

    private List<DetailTable> detailTable = new ArrayList<>();
    private List<String> nums;

    @Override
    protected int getLayoutId() {
        return R.layout.frag_collect_essay_layout;
    }

    @Override
    protected void initViews() {
       
        nums = new ArrayList<>();
        for (int i = 0; i < 20; i++) {
            nums.add(i + "");
        }
        ArrayAdapter adapter = new ArrayAdapter<>(getContext(), android.R.layout.simple_list_item_1,
                android.R.id.text1, nums);
        listView.setAdapter(adapter);
      
    }
}



//这是fragment基类
public abstract class BaseFragment extends Fragment {
    /**
     * 构造BaseFragment子类实例对象,子类务必实现空参构造方法
     *
     * @param subFragmentCls 子类Fragment类型
     * @param params         参数,以Map的形式传递,可空
     * @param <T>
     * @return
     */
    public static <T extends BaseFragment> T newInstance(Class<?> subFragmentCls, Map<String, String> params) {
        try {
            Constructor constructor =
                    subFragmentCls.getConstructor(new Class[]{});

            T fragment = (T) constructor.newInstance(new Object[]{});

            Bundle bundle = new Bundle();

            if (params != null && params.size() > 0) {
                for (String key : params.keySet()) {
                    String value = params.get(key);
                    bundle.putString(key, value);
                }
            }
            fragment.setArguments(bundle);

            return fragment;

        } catch (NoSuchMethodException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (java.lang.InstantiationException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        }

        return null;

    }

    @Override
    public void onAttach(Context context) {
        super.onAttach(context);

        // 注册当前Fragment为订阅者
        EventBus.getDefault().register(this);

        // 获取参数,子类实现
        getReqParams(getArguments());
    }

    /**
     * 获取参数,在子类中定义逻辑
     *
     * @param bundle
     */
    protected void getReqParams(Bundle bundle) {

    }


    /**
     * 创建视图
     *
     * @param inflater
     * @param container
     * @param savedInstanceState
     * @return
     */
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater,
                             @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        // 加载视图
        rootView = inflater.inflate(getLayoutId(), container, false);
        return rootView;
    }

    private View rootView;

    protected View getRootView() {
        return this.rootView;
    }

    /**
     * 视图加载完毕
     *
     * @param view
     * @param savedInstanceState
     */
    @Override
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);

        // 绑定视图和事件
        ButterKnife.bind(this, view);

        // 初始化视图,子类实现
        initViews();

        // 初始化视图
        loadData();
    }

    /**
     * 销毁视图
     */
    @Override
    public void onDestroyView() {
        super.onDestroyView();
    }

    @Override
    public void onDestroy() {
        super.onDestroy();

        // 取消注册
        EventBus.getDefault().unregister(this);
    }

    @Subscribe(threadMode = ThreadMode.MainThread)
    public void onGetResult(EventMessage message) {
        if (message == null) {
            return;
        }
        // 是否为Event消息
        if (message instanceof EventMessage) {
            BaseFragment.this.postEventResult((EventMessage) message);
        }
        // 其他类型消息
        else {
            BaseFragment.this.postOtherResult(message);
        }
    }

    // 获取布局,子类实现逻辑
    protected abstract int getLayoutId();

    // 初始化视图,此方法调用前,视图已经初始化
    protected void initViews() {

    }

    // 加载所需数据,子类实现逻辑
    protected void loadData() {

    }

    // 传递EventBus事件类型结果,子类实现逻辑
    protected void postEventResult(@NonNull EventMessage message) {

    }

    // 传送其他结果,子类实现逻辑
    protected void postOtherResult(@NonNull Object message) {

    }
}

#8


在一开始我是用的getActivity作为上下文传入的,之后才改成getcontext,而且一开始也没有加R.id.text1这个参数,现在我又试了一下 依然没有效果

#9


引用 7 楼 Mark_ZN 的回复:
//这是用于收藏的fragment
public class WordCollectFragment extends BaseFragment {


    @BindView(R.id.sc_wz_lv)
    ListView listView;

    private List<DetailTable> detailTable = new ArrayList<>();
    private List<String> nums;

    @Override
    protected int getLayoutId() {
        return R.layout.frag_collect_essay_layout;
    }

    @Override
    protected void initViews() {
       
        nums = new ArrayList<>();
        for (int i = 0; i < 20; i++) {
            nums.add(i + "");
        }
        ArrayAdapter adapter = new ArrayAdapter<>(getContext(), android.R.layout.simple_list_item_1,
                android.R.id.text1, nums);
        listView.setAdapter(adapter);
      
    }
}



//这是fragment基类
public abstract class BaseFragment extends Fragment {
    /**
     * 构造BaseFragment子类实例对象,子类务必实现空参构造方法
     *
     * @param subFragmentCls 子类Fragment类型
     * @param params         参数,以Map的形式传递,可空
     * @param <T>
     * @return
     */
    public static <T extends BaseFragment> T newInstance(Class<?> subFragmentCls, Map<String, String> params) {
        try {
            Constructor constructor =
                    subFragmentCls.getConstructor(new Class[]{});

            T fragment = (T) constructor.newInstance(new Object[]{});

            Bundle bundle = new Bundle();

            if (params != null && params.size() > 0) {
                for (String key : params.keySet()) {
                    String value = params.get(key);
                    bundle.putString(key, value);
                }
            }
            fragment.setArguments(bundle);

            return fragment;

        } catch (NoSuchMethodException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (java.lang.InstantiationException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        }

        return null;

    }

    @Override
    public void onAttach(Context context) {
        super.onAttach(context);

        // 注册当前Fragment为订阅者
        EventBus.getDefault().register(this);

        // 获取参数,子类实现
        getReqParams(getArguments());
    }

    /**
     * 获取参数,在子类中定义逻辑
     *
     * @param bundle
     */
    protected void getReqParams(Bundle bundle) {

    }


    /**
     * 创建视图
     *
     * @param inflater
     * @param container
     * @param savedInstanceState
     * @return
     */
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater,
                             @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        // 加载视图
        rootView = inflater.inflate(getLayoutId(), container, false);
        return rootView;
    }

    private View rootView;

    protected View getRootView() {
        return this.rootView;
    }

    /**
     * 视图加载完毕
     *
     * @param view
     * @param savedInstanceState
     */
    @Override
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);

        // 绑定视图和事件
        ButterKnife.bind(this, view);

        // 初始化视图,子类实现
        initViews();

        // 初始化视图
        loadData();
    }

    /**
     * 销毁视图
     */
    @Override
    public void onDestroyView() {
        super.onDestroyView();
    }

    @Override
    public void onDestroy() {
        super.onDestroy();

        // 取消注册
        EventBus.getDefault().unregister(this);
    }

    @Subscribe(threadMode = ThreadMode.MainThread)
    public void onGetResult(EventMessage message) {
        if (message == null) {
            return;
        }
        // 是否为Event消息
        if (message instanceof EventMessage) {
            BaseFragment.this.postEventResult((EventMessage) message);
        }
        // 其他类型消息
        else {
            BaseFragment.this.postOtherResult(message);
        }
    }

    // 获取布局,子类实现逻辑
    protected abstract int getLayoutId();

    // 初始化视图,此方法调用前,视图已经初始化
    protected void initViews() {

    }

    // 加载所需数据,子类实现逻辑
    protected void loadData() {

    }

    // 传递EventBus事件类型结果,子类实现逻辑
    protected void postEventResult(@NonNull EventMessage message) {

    }

    // 传送其他结果,子类实现逻辑
    protected void postOtherResult(@NonNull Object message) {

    }
}

我也是醉了,你应该是viewPager的问题,不信你先把这个Fragment放在一个唯一的页面里面,而不是和viewPager嵌套,这样应该不会有问题的,我觉得应该是你设置viewPager的问题。

#10


//这是将fragment设置进入pageradapter里面的代码
private List<Fragment> fragments = new ArrayList<>();

WordCollectFragment fragment1 = BaseFragment.newInstance(WordCollectFragment.class,null);
        fragments.add(fragment1);
        PictureCollectFragment fragment2 = BaseFragment.newInstance(PictureCollectFragment.class,null);
        fragments.add(fragment2);
        VideoCollectFragment fragment3 = BaseFragment.newInstance(VideoCollectFragment.class,null);
        fragments.add(fragment3);

        CollectPageAdapter pageAdapter = new CollectPageAdapter(getSupportFragmentManager(),this,fragments);
        viewPager.setAdapter(pageAdapter);

        tabLayout.setSelectedTabIndicatorColor(Color.BLUE);
        tabLayout.setTabMode(TabLayout.MODE_FIXED);
        tabLayout.setupWithViewPager(viewPager);

#11


确实可能是viewpager的问题,我另起一个activity就可以显示了,我再看看 谢谢大神

#1


第一次论坛发帖求大神帮忙

#2


蓝色背景也没有?不可能吧?

#3


listView显示不出来
效果一直是这样,也没有报错

#4


我去 图片有点大 sorry

#5


还有你的adapter 是不是写的有问题?我觉得你写那个R.id.text1应该是没必要了,直接ArrayAdapter<String> adapter = new ArrayAdapter<String>(context,android.R.layout.simple_list_item_1,num);就可以了,还有我不知道你的框架是怎么弄的,但我知道在fragment中应该是用getActivtiy来获取context的,而不是用getContext()吧!

#6


引用 3 楼 Mark_ZN 的回复:
listView显示不出来
效果一直是这样,也没有报错

你的这个是用viewPager做的吧!你确定你设置了viewPager的Adapter 和页面吗?  

#7





//这是用于收藏的fragment
public class WordCollectFragment extends BaseFragment {


    @BindView(R.id.sc_wz_lv)
    ListView listView;

    private List<DetailTable> detailTable = new ArrayList<>();
    private List<String> nums;

    @Override
    protected int getLayoutId() {
        return R.layout.frag_collect_essay_layout;
    }

    @Override
    protected void initViews() {
       
        nums = new ArrayList<>();
        for (int i = 0; i < 20; i++) {
            nums.add(i + "");
        }
        ArrayAdapter adapter = new ArrayAdapter<>(getContext(), android.R.layout.simple_list_item_1,
                android.R.id.text1, nums);
        listView.setAdapter(adapter);
      
    }
}



//这是fragment基类
public abstract class BaseFragment extends Fragment {
    /**
     * 构造BaseFragment子类实例对象,子类务必实现空参构造方法
     *
     * @param subFragmentCls 子类Fragment类型
     * @param params         参数,以Map的形式传递,可空
     * @param <T>
     * @return
     */
    public static <T extends BaseFragment> T newInstance(Class<?> subFragmentCls, Map<String, String> params) {
        try {
            Constructor constructor =
                    subFragmentCls.getConstructor(new Class[]{});

            T fragment = (T) constructor.newInstance(new Object[]{});

            Bundle bundle = new Bundle();

            if (params != null && params.size() > 0) {
                for (String key : params.keySet()) {
                    String value = params.get(key);
                    bundle.putString(key, value);
                }
            }
            fragment.setArguments(bundle);

            return fragment;

        } catch (NoSuchMethodException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (java.lang.InstantiationException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        }

        return null;

    }

    @Override
    public void onAttach(Context context) {
        super.onAttach(context);

        // 注册当前Fragment为订阅者
        EventBus.getDefault().register(this);

        // 获取参数,子类实现
        getReqParams(getArguments());
    }

    /**
     * 获取参数,在子类中定义逻辑
     *
     * @param bundle
     */
    protected void getReqParams(Bundle bundle) {

    }


    /**
     * 创建视图
     *
     * @param inflater
     * @param container
     * @param savedInstanceState
     * @return
     */
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater,
                             @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        // 加载视图
        rootView = inflater.inflate(getLayoutId(), container, false);
        return rootView;
    }

    private View rootView;

    protected View getRootView() {
        return this.rootView;
    }

    /**
     * 视图加载完毕
     *
     * @param view
     * @param savedInstanceState
     */
    @Override
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);

        // 绑定视图和事件
        ButterKnife.bind(this, view);

        // 初始化视图,子类实现
        initViews();

        // 初始化视图
        loadData();
    }

    /**
     * 销毁视图
     */
    @Override
    public void onDestroyView() {
        super.onDestroyView();
    }

    @Override
    public void onDestroy() {
        super.onDestroy();

        // 取消注册
        EventBus.getDefault().unregister(this);
    }

    @Subscribe(threadMode = ThreadMode.MainThread)
    public void onGetResult(EventMessage message) {
        if (message == null) {
            return;
        }
        // 是否为Event消息
        if (message instanceof EventMessage) {
            BaseFragment.this.postEventResult((EventMessage) message);
        }
        // 其他类型消息
        else {
            BaseFragment.this.postOtherResult(message);
        }
    }

    // 获取布局,子类实现逻辑
    protected abstract int getLayoutId();

    // 初始化视图,此方法调用前,视图已经初始化
    protected void initViews() {

    }

    // 加载所需数据,子类实现逻辑
    protected void loadData() {

    }

    // 传递EventBus事件类型结果,子类实现逻辑
    protected void postEventResult(@NonNull EventMessage message) {

    }

    // 传送其他结果,子类实现逻辑
    protected void postOtherResult(@NonNull Object message) {

    }
}

#8


在一开始我是用的getActivity作为上下文传入的,之后才改成getcontext,而且一开始也没有加R.id.text1这个参数,现在我又试了一下 依然没有效果

#9


引用 7 楼 Mark_ZN 的回复:
//这是用于收藏的fragment
public class WordCollectFragment extends BaseFragment {


    @BindView(R.id.sc_wz_lv)
    ListView listView;

    private List<DetailTable> detailTable = new ArrayList<>();
    private List<String> nums;

    @Override
    protected int getLayoutId() {
        return R.layout.frag_collect_essay_layout;
    }

    @Override
    protected void initViews() {
       
        nums = new ArrayList<>();
        for (int i = 0; i < 20; i++) {
            nums.add(i + "");
        }
        ArrayAdapter adapter = new ArrayAdapter<>(getContext(), android.R.layout.simple_list_item_1,
                android.R.id.text1, nums);
        listView.setAdapter(adapter);
      
    }
}



//这是fragment基类
public abstract class BaseFragment extends Fragment {
    /**
     * 构造BaseFragment子类实例对象,子类务必实现空参构造方法
     *
     * @param subFragmentCls 子类Fragment类型
     * @param params         参数,以Map的形式传递,可空
     * @param <T>
     * @return
     */
    public static <T extends BaseFragment> T newInstance(Class<?> subFragmentCls, Map<String, String> params) {
        try {
            Constructor constructor =
                    subFragmentCls.getConstructor(new Class[]{});

            T fragment = (T) constructor.newInstance(new Object[]{});

            Bundle bundle = new Bundle();

            if (params != null && params.size() > 0) {
                for (String key : params.keySet()) {
                    String value = params.get(key);
                    bundle.putString(key, value);
                }
            }
            fragment.setArguments(bundle);

            return fragment;

        } catch (NoSuchMethodException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (java.lang.InstantiationException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        }

        return null;

    }

    @Override
    public void onAttach(Context context) {
        super.onAttach(context);

        // 注册当前Fragment为订阅者
        EventBus.getDefault().register(this);

        // 获取参数,子类实现
        getReqParams(getArguments());
    }

    /**
     * 获取参数,在子类中定义逻辑
     *
     * @param bundle
     */
    protected void getReqParams(Bundle bundle) {

    }


    /**
     * 创建视图
     *
     * @param inflater
     * @param container
     * @param savedInstanceState
     * @return
     */
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater,
                             @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        // 加载视图
        rootView = inflater.inflate(getLayoutId(), container, false);
        return rootView;
    }

    private View rootView;

    protected View getRootView() {
        return this.rootView;
    }

    /**
     * 视图加载完毕
     *
     * @param view
     * @param savedInstanceState
     */
    @Override
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);

        // 绑定视图和事件
        ButterKnife.bind(this, view);

        // 初始化视图,子类实现
        initViews();

        // 初始化视图
        loadData();
    }

    /**
     * 销毁视图
     */
    @Override
    public void onDestroyView() {
        super.onDestroyView();
    }

    @Override
    public void onDestroy() {
        super.onDestroy();

        // 取消注册
        EventBus.getDefault().unregister(this);
    }

    @Subscribe(threadMode = ThreadMode.MainThread)
    public void onGetResult(EventMessage message) {
        if (message == null) {
            return;
        }
        // 是否为Event消息
        if (message instanceof EventMessage) {
            BaseFragment.this.postEventResult((EventMessage) message);
        }
        // 其他类型消息
        else {
            BaseFragment.this.postOtherResult(message);
        }
    }

    // 获取布局,子类实现逻辑
    protected abstract int getLayoutId();

    // 初始化视图,此方法调用前,视图已经初始化
    protected void initViews() {

    }

    // 加载所需数据,子类实现逻辑
    protected void loadData() {

    }

    // 传递EventBus事件类型结果,子类实现逻辑
    protected void postEventResult(@NonNull EventMessage message) {

    }

    // 传送其他结果,子类实现逻辑
    protected void postOtherResult(@NonNull Object message) {

    }
}

我也是醉了,你应该是viewPager的问题,不信你先把这个Fragment放在一个唯一的页面里面,而不是和viewPager嵌套,这样应该不会有问题的,我觉得应该是你设置viewPager的问题。

#10


//这是将fragment设置进入pageradapter里面的代码
private List<Fragment> fragments = new ArrayList<>();

WordCollectFragment fragment1 = BaseFragment.newInstance(WordCollectFragment.class,null);
        fragments.add(fragment1);
        PictureCollectFragment fragment2 = BaseFragment.newInstance(PictureCollectFragment.class,null);
        fragments.add(fragment2);
        VideoCollectFragment fragment3 = BaseFragment.newInstance(VideoCollectFragment.class,null);
        fragments.add(fragment3);

        CollectPageAdapter pageAdapter = new CollectPageAdapter(getSupportFragmentManager(),this,fragments);
        viewPager.setAdapter(pageAdapter);

        tabLayout.setSelectedTabIndicatorColor(Color.BLUE);
        tabLayout.setTabMode(TabLayout.MODE_FIXED);
        tabLayout.setupWithViewPager(viewPager);

#11


确实可能是viewpager的问题,我另起一个activity就可以显示了,我再看看 谢谢大神