鍍金池/ 問答/Android  HTML/ Fragment中不顯示數(shù)據(jù)?

Fragment中不顯示數(shù)據(jù)?

想在fragment上的listview顯示數(shù)據(jù),但是只能顯示個listview背景色

圖片描述

導(dǎo)航欄的位置,應(yīng)該顯示底下那個新聞數(shù)據(jù),但是空空如也。

mainactivity代碼


public class MainActivity extends FragmentActivity {


    private TabLayout tab_title;
    private ViewPager vp_pager;

    private List<String> list_title;                                      //tab名稱列表
    private List<View> listViews;

    private View newsView;                                                //定義新聞頁面
    private View sportView;                                               //定義體育頁面
    private View funView;                                                 //定義娛樂頁面
    private View science;                                                 //定義科技界面

    private viewAdapter vAdapter;                                         //定義以view為切換的adapter

    private final static String TAG="MainActivity";


    private int[] tabImg;

    private ArrayList<NewsBean> newsBeans =null;

    private DrawerLayout drawerLayout;
    private RelativeLayout rightLayout;
    private ImageView leftMenu, rightMenu;
    private ListView mListView;
    private List<ContentModel> mList;

    private ArrayList<Data> datas = null;
    private FragmentManager fManager = null;
    private long exitTime = 0;

    private Context mContext;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
//
        //去掉title
        requestWindowFeature(Window.FEATURE_NO_TITLE);

//        if (getSupportActionBar() != null){
//            getSupportActionBar().hide();
//        }
//        setContentView(R.layout.activity_main);
        setContentView(R.layout.main);
        mContext = this;



        //1.找到控件
        ListView lv_news =  findViewById(R.id.lv_news);
        System.out.println("找到lv_show");
        //2.獲取新聞數(shù)據(jù)用list封裝
        ArrayList<NewsBean> allNews = NewsUtils.getAllNews(mContext);
        NewsBean a = allNews.get(0);
        System.out.println("newsbean:++++"+a);
        //3.創(chuàng)建一個adapter設(shè)置給listview
        NewsAdapter newsAdapter = new NewsAdapter(mContext, allNews);
        lv_news.setAdapter(newsAdapter);


        //4.設(shè)置listview條目的點(diǎn)擊事件
        //lv_news.setOnItemClickListener(this);

        //初始化
        initControls();
        viewChanage();

        initData();

        leftMenu = (ImageView) findViewById(R.id.leftmenu);
        rightMenu = (ImageView) findViewById(R.id.rightmenu);
        drawerLayout = (DrawerLayout) findViewById(R.id.drawerlayout);
        rightLayout = (RelativeLayout) findViewById(R.id.right);
        mListView = (ListView) findViewById(R.id.left_listview);


        System.out.println("找到了");
        ContentAdapter adapter = new ContentAdapter(this,mList);
        mListView.setAdapter(adapter);

        mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                                    int position, long id) {

                ContentModel contentModel = (ContentModel) parent.getItemAtPosition(position);
                int i = contentModel.getId();
                switch (i){
                    case 1:
                        Intent intent = new Intent(MainActivity.this,LoginActivity.class);
                        startActivity(intent);
                        break;
                    case 2:
//                        Intent intent = new Intent(MainActivity.this,LoginActivity.class);
//                        startActivity(intent);
                        Toast.makeText(MainActivity.this,"正在進(jìn)一步開發(fā)",Toast.LENGTH_LONG).show();
                        break;

                    case 3:
//                        Intent intent = new Intent(MainActivity.this,LoginActivity.class);
//                        startActivity(intent);
                        Toast.makeText(MainActivity.this,"正在進(jìn)一步開發(fā)",Toast.LENGTH_LONG).show();
                        break;

                    case 4:
//                        Intent intent = new Intent(MainActivity.this,LoginActivity.class);
//                        startActivity(intent);
                        Toast.makeText(MainActivity.this,"正在進(jìn)一步開發(fā)",Toast.LENGTH_LONG).show();
                        break;
                }

//                FragmentTransaction bt = fm.beginTransaction();
//                switch ((int) id) {
//                    case 1:
//                        //bt.replace(R.id.content, new NewsFragment());
//
//                        Intent intent = new Intent(MainActivity.this,LoginActivity.class);
//                        startActivity(intent);
//
//                        break;
//                    case 2:
//                        bt.replace(R.id.content, new SubscriptionFragment());
//                        break;
//
//                    default:
//                        break;
//                }
                //bt.commit();
                //drawerLayout.closeDrawer(Gravity.LEFT);
            }
        });

        leftMenu.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                Toast.makeText(MainActivity.this,"點(diǎn)擊了左邊菜單",Toast.LENGTH_LONG).show();
                drawerLayout.openDrawer(Gravity.LEFT);
            }
        });
        rightMenu.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                drawerLayout.openDrawer(Gravity.RIGHT);
            }
        });
        rightLayout.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                drawerLayout.closeDrawer(Gravity.RIGHT);
            }
        });

//        //1.獲取Fragment的管理者
//        FragmentManager fragmentManager = getFragmentManager();
//        //2.開啟事物
//        FragmentTransaction transaction = fragmentManager.beginTransaction();
//        //3.動態(tài)替換
//        FragmentTransaction replace = transaction.replace(R.id.lv_tt, new NewsFragment());
//        //4.commit
//        transaction.commit();


    }




    /**
     * 初始化控件
     */
    private void initControls()
    {
        //title
        tab_title = (TabLayout)findViewById(R.id.tab_title);
        vp_pager = (ViewPager)findViewById(R.id.vp_pager);
        //initBottomNavigationBar();
        //bottom
        //為tabLayout上的圖標(biāo)賦值
        tabImg = new int[]{R.drawable.icon_three,R.drawable.icon_one,R.drawable.icon_two ,R.drawable.icon_four};
    }

    /**
     * 采用在viewpager中切換 view 的方式,并添加了icon的功能
     */
    private void viewChanage()
    {
        listViews = new ArrayList<>();
        LayoutInflater mInflater = getLayoutInflater();
        //title
        newsView = mInflater.inflate(R.layout.fragment_news, null);
        sportView = mInflater.inflate(R.layout.fragment_sports, null);
        funView = mInflater.inflate(R.layout.fragment_amusement, null);
        science = mInflater.inflate(R.layout.fragment_science,null);

        listViews.add(newsView);
        listViews.add(sportView);
        listViews.add(funView);
        listViews.add(science);


        list_title = new ArrayList<>();
        list_title.add("新聞");
        list_title.add("體育");
        list_title.add("娛樂");
        list_title.add("科技");

        //設(shè)置TabLayout的模式,這里主要是用來顯示tab展示的情況的
        //TabLayout.MODE_FIXED          各tab平分整個工具欄,如果不設(shè)置,則默認(rèn)就是這個值
        //TabLayout.MODE_SCROLLABLE;    // 適用于多tab的,也就是有滾動條的,一行顯示不下這些tab可以用這個
        //                              當(dāng)然了,你要是想做點(diǎn)特別的,像知乎里就使用的這種效果
        tab_title.setTabMode(TabLayout.MODE_FIXED); //綁定標(biāo)題數(shù)據(jù)


//        tab_title.setTabMode(TabLayout.MODE_SCROLLABLE);
        //設(shè)置tablayout距離上下左右的距離
        //tab_title.setPadding(20,20,20,20);

        //為TabLayout添加tab名稱
        tab_title.addTab(tab_title.newTab().setText(list_title.get(0)));
        tab_title.addTab(tab_title.newTab().setText(list_title.get(1)));
        tab_title.addTab(tab_title.newTab().setText(list_title.get(2)));
        tab_title.addTab(tab_title.newTab().setText(list_title.get(3)));

        vAdapter = new viewAdapter(this,listViews,list_title,tabImg);
        vp_pager.setAdapter(vAdapter);
        //將tabLayout與viewpager連起來
        tab_title.setupWithViewPager(vp_pager);
    }
    private void initData() {

        mList = new ArrayList<ContentModel>();
        mList.add(new ContentModel(R.drawable.icon_one, "新聞", 1));
        mList.add(new ContentModel(R.drawable.icon_two, "訂閱", 2));
        mList.add(new ContentModel(R.drawable.icon_three, "圖片", 3));
        mList.add(new ContentModel(R.drawable.icon_four, "視頻", 4));
        mList.add(new ContentModel(R.drawable.icon_one, "跟帖", 5));
        mList.add(new ContentModel(R.drawable.icon_four, "投票", 6));
    }
}

Fragment部分:


public class NewsFragment extends Fragment {

    private ListView lv_news;
    private ListView list;
    private SimpleAdapter adapter;
    protected Context mContext;
//    @Override
//    public void onAttach(Activity activity) {
//        super.onAttach(activity);
//        this.mActivity = activity;
//    }

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

    }

    @Override
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);


    }

    private ListView ListView;

    //第一次畫ui的時候調(diào)用,要顯示Fragment自己的內(nèi)容
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {


        //通過打氣筒把一個布局轉(zhuǎn)換成view對象

        //View rootview=inflater.inflate(R.layout.fragment_news,container,false);

        View view = LayoutInflater.from(this.getActivity()).inflate(R.layout.fragment_news, null);




        //4.設(shè)置listview條目的點(diǎn)擊事件
        lv_news.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {

        }
        });*/



        //1.找到控件
        ListView lv_news =  (ListView) view.findViewById(R.id.lv_newss);

        System.out.println("找到1111111");

        //2.獲取新聞數(shù)據(jù)用list封裝
        ArrayList<NewsBean> allNews = NewsUtils.getAllNews(getActivity());

        System.out.println("找到newsbean");
        //3.創(chuàng)建一個adapter設(shè)置給listview
        NewsAdapter newsAdapter = new NewsAdapter(getActivity(),allNews);
        lv_news.setAdapter(newsAdapter);

        //4.設(shè)置listview條目的點(diǎn)擊事件
        //lv_news.setOnItemClickListener(this);


        return view;
    }

    @Override
    public void onDetach() {
        super.onDetach();
    }
}

主布局xml

 <android.support.design.widget.TabLayout
            android:id="@+id/tab_title"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true"
            android:layout_alignParentTop="true"
            android:background="@color/colorPrimary"
            app:tabIndicatorColor="@color/colorAccent"
            app:tabSelectedTextColor="@color/blue_light"
            app:tabTextColor="@color/material_orange" />
        <!--app:tabTextAppearance="@style/tablayoutIcon"-->

        <android.support.v4.view.ViewPager
            android:id="@+id/vp_pager"
            android:layout_width="fill_parent"
            android:layout_height="match_parent"
            android:layout_alignParentBottom="true"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true"
            android:layout_weight="1" />

fragment布局


    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">



    <ListView
        android:id="@+id/lv_newss"
        android:layout_width="match_parent"
        android:layout_height="500dp"
        android:background="@color/colorPrimary">
    </ListView>



</LinearLayout><?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">



    <ListView
        android:id="@+id/lv_newss"
        android:layout_width="match_parent"
        android:layout_height="500dp"
        android:background="@color/colorPrimary">
    </ListView>



</LinearLayout>
回答
編輯回答
練命

1,先排除ListView布局是否有問題,比如有正常的寬高。
2,排除adapter數(shù)據(jù)是否有數(shù)據(jù)
3,再排除adapter的數(shù)據(jù)刷新是否有問題
4,再排除你的item是否是可見的

2017年6月29日 11:37
編輯回答
孤客

是不是你數(shù)據(jù)加載那一塊有問題呀。

    //2.獲取新聞數(shù)據(jù)用list封裝
    ArrayList<NewsBean> allNews = NewsUtils.getAllNews(getActivity());
  

這個是異步的么?

2017年4月9日 00:31
編輯回答
焚音

背景色有,那說明是你的ListView數(shù)據(jù)沒有加載成功吧,你把ListView去掉,換成普通的TextView看看有沒有內(nèi)容顯示

2017年4月11日 06:44