我正在做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;
}
}
}
一开始,当我使用侧抽屉时,它工作正常。 非常感谢你!