//这是在一个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
效果一直是这样,也没有报错
#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
你的这个是用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
我也是醉了,你应该是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);
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
效果一直是这样,也没有报错
#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
你的这个是用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
我也是醉了,你应该是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);
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就可以显示了,我再看看 谢谢大神