Android TabLayout和Fragment不膨胀列表视图

时间:2015-08-25 19:08:03

标签: java android android-fragments fragment material-design

我正在做Android并试图使用材料设计。所以现在我把tablayout栏就像google的例子(cheese-master) 到目前为止它工作正常,但当我在选项卡中选择我的第二个选项时,没有任何事情发生 我的应用程序基于卡片,右侧有树点,打开上下文菜单。我的第一个上下文菜单选项是一个类似的按钮,它在卡的内部数据库中保存了一些信息。直到现在好了,但是当我在tablayout上选择第二个选项时,它会假设“启动”具有从SQLite填充的列表视图的片段。但是,没有任何东西,我的意思是它很好地保存在数据库上,但片段不会膨胀列表视图。此外,当回到第一个tablayout选项并且我使用滑动刷新并返回第二个选项时它会填满列表视图,每次我想看到我保存的卡片时,我必须刷新主要活动。 那么如何在不刷新整个活动的情况下给第二个tablayout充气呢。

这是我的MainActivity: private void init(){

    toolBar = (Toolbar) findViewById(R.id.toolbar);
    toolBar.setTitle(getResources().getString(R.string.app_name));
    setSupportActionBar(toolBar);

    viewPager = (ViewPager) findViewById(R.id.viewpager);
    if (viewPager != null) {
        setupViewPager(viewPager);
    }
    tabLayout = (TabLayout) findViewById(R.id.tabs);
    tabLayout.setupWithViewPager(viewPager);
}

private void setupViewPager(ViewPager viewPager) {

    adapter = new DrawerAdapter(getSupportFragmentManager());
    adapter.addFragment(new CardFragment(), getResources().getString(R.string.offers));
    adapter.addFragment(new SavedCardFragment(), getResources().getString(R.string.myOffers));
    adapter.addFragment(new SearchCardFragment(), getResources().getString(R.string.search));
    viewPager.setAdapter(adapter);
}

这是我的SavedCardFragment:

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

        Log.e ("CALL", "SAVEDCARDFRAGMENT");

        View view = inflater.inflate(R.layout.activity_saved_cards, container, false);
        adapter = new SavedCardAdapter (getActivity());
        recyclerView = (RecyclerView) view.findViewById(R.id.savedCardListView);
        layoutManager = new LinearLayoutManager (getActivity());
        recyclerView.setLayoutManager(layoutManager);
        recyclerView.setAdapter(adapter);

        return view;
    }


and This is the SavedCardAdapter:
 public SavedCardAdapter (Context context) {
        Log.e("CREATED", "Saved Frag Created");
    }

    @Override
    public ViewHolder onCreateViewHolder (ViewGroup parent, int viewType) {


        parseCursor(Posts.select(AppConst.TB_POST, AppConst.columnAll));

        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_saved_card_item, parent, false);
        ViewHolder viewHolder = new ViewHolder(view);
        return viewHolder;

    }

    @Override
    public void onBindViewHolder (ViewHolder holder, final int position) {

        final Posts localPost = AppController.getInstance().getListOfSavedPosts().get(position);
        holder.txtId.setText(localPost.getId()+"");
        holder.txtTitle.setText(localPost.getPublisher());
        holder.txtSubtitle.setText(localPost.getTitle());


    }

    @Override
    public int getItemCount () {
        return AppController.getInstance().getListOfSavedPosts().size();
    }



    public void deleteItem(int position){


        Posts.deletePost(AppController.getInstance().getListOfSavedPosts().get(position));
        AppController.getInstance().getListOfSavedPosts().remove(position);
        notifyItemRemoved(position);

    }

//This function fills up an ArrayList
    public Boolean parseCursor (Cursor cursor){
        Log.e("CURSOR", cursor.getCount() + "");

        AppController.getInstance().getListOfSavedPosts().clear();
        if(cursor.getCount() != 0){
            cursor.moveToFirst();

            do{
                post = new Posts();
                post.setId(cursor.getInt(0));
                post.setTitle(cursor.getString(1));
                post.setPost(cursor.getString(2));
                AppController.getInstance().getListOfSavedPosts().add(post);
            }while(cursor.moveToNext());
           return true;
        }else {

            return false;

        }
    }


    //INNER CLASS
    protected class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{

        TextView txtTitle;
        TextView txtSubtitle;
        TextView txtId;
        Button btnDiscart;


        public ViewHolder (View itemView){
            super (itemView);

            txtTitle = (TextView)itemView.findViewById (R.id.txtPostTitle);
            txtSubtitle = (TextView)itemView.findViewById (R.id.txtPostSubtitle);
            btnDiscart = (Button)itemView.findViewById(R.id.btnDiscart);
            txtId = (TextView)itemView.findViewById(R.id.txtId);
            btnDiscart.setOnClickListener(this);
        }

        @Override
        public void onClick(View view){
            switch(view.getId()){

                case R.id.btnDiscart:
                    deleteItem(getPosition());
                    break;

                default:
                    break;
            }
        }
    }

一开始,当我使用侧抽屉时,它工作正常。 非常感谢你!

0 个答案:

没有答案