我正在创建一个列表应用程序,该应用程序显示在MainFragment中创建的所有列表。现在,当我在列表中选择任何一个时,应该打开一个包含该列表项的新片段,并使用viewpager在列表之间滚动。现在,我无法将列表名称的信息传递给我的viewpager适配器。 我
我试图在viewpager上设置标签,但仍然无法解决问题。
我的DBAdapter代码
public class DBAdapter {
public static final String KEY_ROWID = "_id";
public static final String KEY_ISDONE = "isdone";
public static final String KEY_TITLE = "title";
public static final String KEY_LIST_ID="list_id";
public static final String KEY_LISTID = "_id";
public static final String KEY_LISTNAME="listName";
private static final String TAG = "DBAdapter";
private static final String DATABASE_NAME = "shopping_lists";
private static final String ITEMS_TABLE_NAME = "list_items";
private static final String LISTS_TABLE_NAME = "lists";
private static final int DATABASE_VERSION = 13;
//create lists table
private static final String LISTS_TABLE_CREATE =
"create table lists ("
+" _id integer primary key autoincrement,"
+" listName text not null,"
+" recentlyUsed boolean not null DEFAULT 0"
+" );";
//create items table
private static final String ITEMS_TABLE_CREATE =
"create table list_items ("
+"_id integer primary key autoincrement,"
+" isdone boolean not null DEFAULT 0,"
+" title text not null,"
+" list_id integer,"
+" quantity integer not null DEFAULT 1,"
+" FOREIGN KEY(list_id) REFERENCES lists(_id)"
+" );";
private final Context context;
private DatabaseHelper DBHelper;
private SQLiteDatabase db;
public DBAdapter(Context ctx)
{
this.context = ctx;
DBHelper = new DatabaseHelper(context);
}
我的ViewPager片段的代码
public class ListFragment extends Fragment {
int position;
long lid;
private ViewPager viewPager;
public ListFragment(int pos,long id) {
// Required empty public constructor
position=pos;
lid=id;
}
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view=inflater.inflate(R.layout.fragment_list,container,false);
viewPager = (ViewPager) view.findViewById(R.id.view_pager);
viewPager.setadapter(new
FragmentAdapter(getchildFragmentManager()));
return view;
}
}
FragmentAdapter的代码
public class FragmentAdapter extends FragmentStatePagerAdapter {
public FragmentAdapter(FragmentManager fm) {
super(fm,FragmentStatePagerAdapter.BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT);
}
@Override
public Fragment getItem(int position) {
Bundle bundle = new Bundle();
RestFragment rfrag=new RestFragment();
rfrag.setarguments(bundle);
return rfrag;
}
@Override
public int getcount() {
return 5;
}
}
要在Viewpager上显示的片段代码
public View onCreateView(LayoutInflater inflater,Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view=inflater.inflate(R.layout.fragment_rest,false);
Log.d("current p",id+"");
FloatingactionButton fab = view.findViewById(R.id.floatingactionButton1);
recyclerView = (RecyclerView) view.findViewById(R.id.item_recycler_view);
recyclerView.setHasFixedSize(true);
layoutManager = new LinearLayoutManager(getactivity());
recyclerView.setLayoutManager(layoutManager);
db=new DBAdapter(getactivity());
db.open();
mCursor=db.getallItems(id);
mAdapter = new itemAdapter(mCursor,getactivity(),new itemAdapter.OnItemClicked2() {
@Override
public void onItemClick(View v,int position,long id) {
}
});
recyclerView.setadapter(mAdapter);
fab.setOnClicklistener(new View.OnClicklistener() {
@Override
public void onClick(View view) {
Log.d("new ittem",id+"");
db.insertNewItem("itemx",id);
mAdapter.swapCursor(db.getallItems(id));
}
});
new ItemTouchHelper(new ItemTouchHelper.SimpleCallback(0,ItemTouchHelper.LEFT|ItemTouchHelper.RIGHT) {
@Override
public boolean onmove(@NonNull RecyclerView recyclerView,@NonNull RecyclerView.ViewHolder viewHolder,@NonNull RecyclerView.ViewHolder target) {
return false;
}
@Override
public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder,int direction) {
db.deleteItem((long) viewHolder.itemView.getTag());
}
}).attachToRecyclerView(recyclerView);
return view;
}