如何从viewpager片段中的sqlite检索行?

我正在创建一个列表应用程序,该应用程序显示在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;
}
zuo123456789roc 回答:如何从viewpager片段中的sqlite检索行?

您可以使用共享的ViewModal或使用接口通过父Activity来实现通信。

https://developer.android.com/training/basics/fragments/communicating

提供所有详细信息

本文链接:https://www.f2er.com/3149448.html

大家都在问