Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/228.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 Viewpager仅显示第一个片段选项卡_Android_Listview_Android Fragments_Tabs_Android Viewpager - Fatal编程技术网

Android Viewpager仅显示第一个片段选项卡

Android Viewpager仅显示第一个片段选项卡,android,listview,android-fragments,tabs,android-viewpager,Android,Listview,Android Fragments,Tabs,Android Viewpager,在堆栈上的第一个帖子,所以对我放轻松 我正在尝试制作一个应用程序,其中我从一个ViewPagerFragment加载了4个选项卡,每个选项卡都加载了一个片段。第一个选项卡(我们称之为片段A)从联机获取数据,将其保存到数据库中,然后将其发布到listview,片段B和其余的从数据库获取数据,并将数据发布到listview中 第一个片段在其listview上完美地显示了数据,但所有其他片段都显示为空白。我还注意到,如果我不放入片段A并让其他选项卡(B、C、D)从数据库中已保存的数据加载,则显示的数据

在堆栈上的第一个帖子,所以对我放轻松

我正在尝试制作一个应用程序,其中我从一个ViewPagerFragment加载了4个选项卡,每个选项卡都加载了一个片段。第一个选项卡(我们称之为片段A)从联机获取数据,将其保存到数据库中,然后将其发布到listview,片段B和其余的从数据库获取数据,并将数据发布到listview中

第一个片段在其listview上完美地显示了数据,但所有其他片段都显示为空白。我还注意到,如果我不放入片段A并让其他选项卡(B、C、D)从数据库中已保存的数据加载,则显示的数据将仅用于最后一个选项卡(D)但它的数据将显示在选项卡B上。其余的都显示为空白

每个片段启动网络

片段A

public class HomeFragment extends Fragment {

public static HomeFragment newInstance(String text) {
    HomeFragment mFragment = new HomeFragment();
    Bundle mBundle = new Bundle();
    mBundle.putString("f", text);
    mFragment.setArguments(mBundle);
    return mFragment;
}


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    context = getActivity();
    setHasOptionsMenu(true);

    info = new Db(context);
    anime = AnimationUtils.loadAnimation(getActivity(), R.anim.slide_up);
    return inflater.inflate(R.layout.homelist, container, false);


}


@Override
public void onStart() {
    super.onStart();
    new NetworkClass().execute("0");
}


// -------------------------------xxx----------------------------
public class NetworkClass extends AsyncTask<String, Integer, String> {
    //ProgressDialog progressDialog;
    private StringBuilder sb;
    private InputStream is;
    private String result;
    MaterialDialog dialog;

    @Override
    protected void onPreExecute() {

        //show loading...runs in main UI thread
        if (pre == 0) {

            dialog = new MaterialDialog.Builder(getActivity())
                    .content(loadingMsg)
                    .progress(true, 0)
                    .show();


        }
    }

    @Override
    protected String doInBackground(String... arg0) {


        //runs in background thread
        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
        HttpClient httpclient3 = new DefaultHttpClient();
        HttpPost httppost3;
        JSONObject jsonObject = getDetails();
        if (!SearchActivity.searchCheck) {

            Log.v("home post: ", "" + jsonObject);
            nameValuePairs.add(new BasicNameValuePair("jsonObj", ""
                    + jsonObject));
            httppost3 = new HttpPost(
                    "URL");

        } else {

            Log.v("Phone Details: ", "" + jsonObject);

            httppost3 = new HttpPost(
                    "URL");


        }




        return null;
    }


    @Override
    protected void onPostExecute(String result) {
        //stop refresh if any
        swipeLayout.setRefreshing(false);

        try {
            final MyAdapter adapter = new MyAdapter(context, inboxList,
                    R.layout.home_list_sub_layout, new String[]{}, new int[]{
                    R.id.title_TV_HLN, R.id.story_TV_HLN,
                    R.id.Date_TV_HLN, R.id.tonality_TV_HLN,
                    R.id.avatar_HLN, R.id.favImageView});

            list = (ListView) ((Activity) context).findViewById(R.id.home_list);
            list.setAdapter(adapter);

            //change on refresh
            //adapter.notifyDataSetChanged();

            getActivity().runOnUiThread(new Runnable() {
                public void run() {
                    adapter.notifyDataSetChanged();
                }
            });


            int x = adapter.getCount();
            Log.v("Count : ", "" + x);

            if (pre == 0) {
                //progressDialog.dismiss();

                dialog.dismiss();
            }

            list.setTextFilterEnabled(true);

            SearchActivity.searchCheck = false;



    }
}


private class MyAdapter extends SimpleAdapter {

    int list_count;

    public MyAdapter(Context context, List<? extends Map<String, ?>> data,
                     int resource, String[] from, int[] to) {
        super(context, data, resource, from, to);


        SharedPreferences SP = PreferenceManager.getDefaultSharedPreferences(context);

        String fetch = SP.getString("no_of_stories", "2");

        System.out.println(fetch);

        if (fetch.equals("1")) {
            list_count = 50;
        } else if (fetch.equals("2")) {
            list_count = 100;
        } else if (fetch.equals("3")) {
            list_count = 150;
        }

        //change on refresh
        notifyDataSetChanged();

    }

    //no. of items to display
    @Override
    public int getCount() {

        System.out.println(list_count + " Check this out");
        return list_count;
    }


    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        final int pos = position;


        if (convertView == null) {
            LayoutInflater inflater = LayoutInflater.from(context);
            convertView = inflater.inflate(R.layout.home_list_sub_layout,
                    null, false);
        }

        anime = AnimationUtils.loadAnimation(getActivity(), (position > lastPosition) ? R.anim.up_from_bottom : R.anim.down_from_top);
        convertView.startAnimation(anime);
        lastPosition = position;

        return convertView;
    }
}
公共类HomeFragment扩展了片段{
公共静态HomeFragment newInstance(字符串文本){
HomeFragment MFFragment=新的HomeFragment();
Bundle mBundle=新Bundle();
mBundle.putString(“f”,文本);
mFragment.setArguments(mBundle);
返回碎片;
}
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
context=getActivity();
设置选项菜单(真);
info=新数据库(上下文);
anime=AnimationUtils.loadAnimation(getActivity(),R.anim.slide\u向上);
返回充气机。充气(R.layout.homelist,容器,假);
}
@凌驾
public void onStart(){
super.onStart();
新建NetworkClass()。执行(“0”);
}
//------------------------------------xxx----------------------------
公共类NetworkClass扩展异步任务{
//进行对话进行对话;
私家侦探;
私有输入流是;
私有字符串结果;
材料对话;
@凌驾
受保护的void onPreExecute(){
//显示加载…在主UI线程中运行
如果(pre==0){
dialog=new MaterialDialog.Builder(getActivity())
.content(加载消息)
.进度(正确,0)
.show();
}
}
@凌驾
受保护的字符串doInBackground(字符串…arg0){
//在后台线程中运行
List nameValuePairs=新的ArrayList();
HttpClient httpclient3=新的DefaultHttpClient();
HttpPost-httppost3;
JSONObject JSONObject=getDetails();
如果(!SearchActivity.searchCheck){
Log.v(“主帖子:”、“+jsonObject”);
添加(新的BasicNameValuePair(“jsonObj”)
+jsonObject);
httppost3=新的HttpPost(
“网址”);
}否则{
Log.v(“电话详细信息:”、“+jsonObject”);
httppost3=新的HttpPost(
“网址”);
}
返回null;
}
@凌驾
受保护的void onPostExecute(字符串结果){
//如果有,请停止刷新
swipeLayout.setRefreshing(false);
试一试{
final MyAdapter=新MyAdapter(上下文、收件箱列表、,
R.layout.home_list_sub_布局,新字符串[]{},新int[]{
R.id.title\u TV\u HLN,R.id.story\u TV\u HLN,
R.id.Date\u TV\u HLN,R.id.tonality\u TV\n,
R.id.avatar_HLN,R.id.favImageView});
列表=(ListView)((活动)上下文).findViewById(R.id.home\u列表);
list.setAdapter(适配器);
//刷新时更改
//adapter.notifyDataSetChanged();
getActivity().runOnUiThread(新的Runnable()){
公开募捐{
adapter.notifyDataSetChanged();
}
});
intx=adapter.getCount();
Log.v(“计数:”,“+x”);
如果(pre==0){
//progressDialog.disclose();
dialog.dismise();
}
list.setTextFilterEnabled(true);
SearchActivity.searchCheck=false;
}
}
私有类MyAdapter扩展了SimpleAdapter{
整数列表计数;
公共MyAdapter(上下文,列表>数据,
int资源,字符串[]从,int[]到){
超级(上下文、数据、资源、从、到);
SharedReferences SP=PreferenceManager.GetDefaultSharedReferences(上下文);
String fetch=SP.getString(“没有故事”,“2”);
系统输出打印项次(取数);
if(fetch.equals(“1”)){
列表计数=50;
}else if(fetch.equals(“2”)){
列表计数=100;
}else if(fetch.equals(“3”)){
列表计数=150;
}
//刷新时更改
notifyDataSetChanged();
}
//要显示的项目数
@凌驾
public int getCount(){
System.out.println(list_count+“Check this out”);
返回列表计数;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
最终int pos=位置;
if(convertView==null){
LayoutFlater充气机=LayoutFlater.from(上下文);
convertView=充气机充气(右布局、主列表、子布局、,
空,假);
}
anime=AnimationUtils.loadAnimation(getActivity(),(位置>lastPosition)?R.anim.up\u from\u bottom:R.anim.down\u from\u top);
convertView.startAnimation(动画);
最后位置=位置;
返回视图;
}
}
ViewPagerFragment

public class ViewPagerFragment extends Fragment {

public List<TabPagerItem> mTabs = new ArrayList<>();
private HomeFragment home;

private int x = 0;
private Context context;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    context = getActivity();
    createTabPagerItem();
}

private void createTabPagerItem() {

   mTabs.add(new TabPagerItem(getText(R.string.all), HomeFragment.newInstance(getString(R.string.all))));

    mTabs.add(new TabPagerItem(getText(R.string.print), PrintFragment.newInstance(getString(R.string.print))));
    mTabs.add(new TabPagerItem(getString(R.string.reports), MainFragment.newInstance(getString(R.string.all))));
    mTabs.add(new TabPagerItem(getText(R.string.radio), RadioFragment.newInstance(getString(R.string.radio))));



}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.fragment_viewpager, container, false);
    rootView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
    return rootView;
}


@Override
public void onViewCreated(final View view, Bundle savedInstanceState) {
    ViewPager mViewPager = (ViewPager) view.findViewById(R.id.viewPager);

    //pages to store in memory
    mViewPager.setOffscreenPageLimit(4);

    mViewPager.setAdapter(new ViewPagerAdapter(getChildFragmentManager(), mTabs));

    getActivity().runOnUiThread(new Runnable() {
        public void run() {
            (new ViewPagerAdapter(getChildFragmentManager(), mTabs)).notifyDataSetChanged();
        }
    });

    TabLayout mSlidingTabLayout = (TabLayout) view.findViewById(R.id.tabLayout);

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        mSlidingTabLayout.setElevation(15);
    }
    mSlidingTabLayout.setupWithViewPager(mViewPager);


}
public类ViewPagerFragment扩展片段{
public List mtab=new ArrayList();
私人住宅;
私有整数x=0;
私人语境;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
context=getActivity();
createTabPagerItem();
}
私有void createTabPagerItem(){
add(新TabPagerItem(getText(R.string.all)、HomeFragment.newInstance(getString(R.string.all)));
mT
public class ViewPagerAdapter extends FragmentPagerAdapter {

public ViewPagerAdapter(FragmentManager fragmentManager, List<TabPagerItem> tabs) {
    super(fragmentManager);
    this.mTabs = tabs;

}

public void setDatasource(List<TabPagerItem> datasource){
    mTabs = datasource;
    notifyDataSetChanged();
}

@Override
public Fragment getItem(int i) {
    return mTabs.get(i).getFragment();
}


@Override
public int getCount() {
    return mTabs.size();
}

public Fragment getRegisteredFragment(int position) {

    return mTabs.get(position).getFragment();
}


@Override
public CharSequence getPageTitle(int position) {
    return mTabs.get(position).getTitle();
}
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    context = getActivity();
    setHasOptionsMenu(true);
    info = new Db(context);
    return inflater.inflate(R.layout.homelist, container, false);
}

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {

    MenuInflater flat = getActivity().getMenuInflater();
    flat.inflate(R.menu.menu, menu);
}


@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // TODO Auto-generated method stub

    switch (item.getItemId()) {

        case R.id.menu_search:

            SearchDialog searchDialog = new SearchDialog(getActivity());
            searchDialog.show();

            break;
    }
    return true;
}



@Override
public void onStart() {
    super.onStart();
    new NetworkClass().execute("0");
}

public class NetworkClass extends
        AsyncTask<String, Integer, ArrayList<HashMap<String, ?>>> {

    @Override
    protected ArrayList<HashMap<String, ?>> doInBackground(String... arg0) {

        if (SearchDialog.iconChaeck) {
            searchDb = new SearchDB(context);
            searchDb.open();
            inboxList = new ArrayList<HashMap<String, ?>>();
            inboxList = searchDb.getData(arg0[0]);
            searchDb.close();
        } else {
            homeDb = new HomeStoriesDB(context);
            homeDb.open();
            inboxList = new ArrayList<HashMap<String, ?>>();
            inboxList = homeDb.getData(arg0[0]);
            homeDb.close();
        }
        favouriteDB = new FavouriteDB(context);
        favouriteDB.open();
        favoritesList = favouriteDB.getFavoriteStoryIDList();
        favouriteDB.close();

        return inboxList;

    }

    @Override
    protected void onPostExecute(final ArrayList<HashMap<String, ?>> result) {

        try {

            if (!result.isEmpty()) {
                MyAdapter adapter = new MyAdapter(context, inboxList,
                        R.layout.home_list_sub_layout, new String[]{
                        "Title", "Story", "StoryDate",
                        "Media_House_ID", "tonality", "pic",
                        "favorite"}, new int[]{
                        R.id.title_TV_HLN, R.id.story_TV_HLN,
                        R.id.Date_TV_HLN, R.id.tonality_TV_HLN,
                        R.id.avatar_HLN, R.id.favImageView});

                list = (ListView) ((Activity) context)
                        .findViewById(R.id.home_list);
                list.setAdapter(adapter);

                //adapt.setDatasource(null);

                // ---------------------Click Event of List
                list.setOnItemClickListener(new AdapterView.OnItemClickListener() {

                    @Override
                    public void onItemClick(AdapterView<?> arg0, View view,
                                            int position, long id) {

                        int type = Integer.parseInt((String) inboxList.get(
                                position).get("Media_ID"));
                        switch (type) {

                            case 0:

                                Intent it = new Intent(context,
                                        PrintDetailActivity.class);

                                it.putExtra("map", inboxList.get(position));
                                startActivity(it);

                                break;

                            case 1:

                                it = new Intent(context,
                                        RadioDetailActivity.class);

                                it.putExtra("map", inboxList.get(position));
                                startActivity(it);

                                break;

                            case 2:

                                it = new Intent(context, TVDetailActivity.class);

                                it.putExtra("map", inboxList.get(position));
                                startActivity(it);

                                break;

                            default:
                                System.out.println("No form available");
                                break;
                        }
                    }
                });
            } else {
                Toast.makeText(getActivity(), "No Data Found",
                        Toast.LENGTH_SHORT).show();
            }

            //progressDialog.dismiss();

        } catch (Exception e)
        {

        }

    }
}

private class MyAdapter extends SimpleAdapter {

    public MyAdapter(Context context, List<? extends Map<String, ?>> data,
                     int resource, String[] from, int[] to) {
        super(context, data, resource, from, to);

    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        final int pos = position;
        if (convertView == null) {
            LayoutInflater inflater = LayoutInflater.from(context);
            convertView = inflater.inflate(R.layout.home_list_sub_layout,
                    null, false);
        }

        @SuppressWarnings("unchecked")
        HashMap<String, Object> data = (HashMap<String, Object>) getItem(position);

        TextView title = (TextView) convertView.findViewById(R.id.title_TV_HLN);
        title.setText((String) data.get("Title"));
        title.setTypeface(null, Typeface.BOLD);

        ((TextView) convertView.findViewById(R.id.Date_TV_HLN))
                .setText("" + ((String) data.get("StoryDate")).replace(",", ""));

        ((TextView) convertView.findViewById(R.id.media_TV_HLN))
                .setText((String) data.get("Media_House_ID"));

        String mention_value = (String) data.get("mentioned");
        TextView mention = ((TextView) convertView.findViewById(R.id.story_TV_HLN));
        if (mention_value == null || mention_value.equals("null")) {
            mention
                    .setText(Html
                            .fromHtml("<b><font color='#8c8c8c'>Mentioned:</font></b>"
                                    + " " + "N.A"));
        } else {
            if (mention_value.length() > 100) {
                mention_value = mention_value.substring(0, 99) + "...";
            }
            mention.setText(Html
                    .fromHtml("<b><font color='#8c8c8c'>Mentioned:</font></b>"
                            + " " + mention_value));
        }

        String tonality_value = (String) data.get("tonality");

        String two = "negative";

        if (tonality_value.equals(two)) {
            ((TextView) convertView.findViewById(R.id.tonality_TV_HLN))
                    .setTextColor(Color.parseColor("#AD0B11"));
        } else {
            ((TextView) convertView.findViewById(R.id.tonality_TV_HLN))
                    .setTextColor(getResources().getColor(R.color.black));

        }

        ((TextView) convertView.findViewById(R.id.tonality_TV_HLN))
                .setText(Html
                        .fromHtml("<b><font color='#8c8c8c'>Effect:</font></b>"
                                + " " + tonality_value));

        ImageView storyIcon = ((ImageView) convertView
                .findViewById(R.id.avatar_HLN));

        int media_id = Integer.parseInt((String) inboxList.get(pos).get(
                "Media_ID"));

        switch (media_id) {

            case 0:
                storyIcon.setImageResource(R.drawable.ic_print);
                break;

            case 1:
                storyIcon.setImageResource(R.drawable.ic_radio);
                break;

            case 2:
                storyIcon.setImageResource(R.drawable.ic_tv);
                break;

            default:
                storyIcon.setImageResource(R.drawable.ic_print);
                break;
        }
        final ImageView imageview = ((ImageView) convertView
                .findViewById(R.id.favImageView));
        if (favoritesList.contains(inboxList.get(pos).get("Story_ID"))) {
            // Log.v(" favorit  story ", );
            imageview.setImageResource(R.drawable.favorite_red);
        } else {
            imageview.setImageResource(R.drawable.favorite_blue);
        }

        imageview.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                favouriteDB.open();
                String story_id = (String) inboxList.get(pos).get(
                        "Story_ID");
                String msg = "";

                try {
                    if (!(favoritesList.contains(story_id))) {
                        favouriteDB.createEntry(inboxList.get(pos));
                        favouriteDB.close();
                        imageview.setImageResource(R.drawable.favorite_red);
                        favoritesList.add(story_id);
                        msg = "Successfully added in favorite list";
                    } else {

                        favouriteDB.deleteStoryID(story_id);
                        favoritesList.remove(story_id);
                        imageview
                                .setImageResource(R.drawable.favorite_blue);
                        msg = "Successfully deleted from favorite list";
                    }
                    Toast.makeText(context, msg, Toast.LENGTH_SHORT).show();
                    favouriteDB.close();
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

            }
        });

        return convertView;
    }
}