想要将 Recyclerview Sqlite 数据传递给片段?

我正在尝试将我的 recyclerview SQLite 数据传递给片段

**// This is my sqlite helper class**

// This is my sqlite helper class
 public class DataFavorite extends SQLiteOpenHelper {
    private static final String DATABASE_NAME = "FavoriteDB.db";
    private static final int DATABASE_VERSION = 1;
    public static final String LOGTAG ="FAVORITE";
    SQLiteOpenHelper dbhandler;
    SQLiteDatabase db;
    public DataFavorite(Context context) {
        super(context,DATABASE_NAME,null,DATABASE_VERSION);
    }
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {

    final String SQL_CREATE_FAVORITE_TABLE;
    SQL_CREATE_FAVORITE_TABLE = "CREATE TABLE " + FavoriteContract.FavoriteEnty.TABLE_NAME + " (" +
            FavoriteContract.FavoriteEnty._ID + " INTEGER PRIMARY KEY AUTOINCREMENT," +
            FavoriteContract.FavoriteEnty.COLUMN_MOVIEID + " INTEGER," +
            FavoriteContract.FavoriteEnty.COLUMN_LIKE + " INTEGER," +
            FavoriteContract.FavoriteEnty.COLUMN_TITLE + " TEXT NOT NULL," +
            FavoriteContract.FavoriteEnty.COLUMN_BACKDROP_PATH + " TEXT NOT NULL," +
            FavoriteContract.FavoriteEnty.COLUMN_SUMMARY + " TEXT NOT NULL" +
            "); ";
    sqLiteDatabase.execSQL(SQL_CREATE_FAVORITE_TABLE);
}

    public void open(){
        Log.i(LOGTAG,"Database Opened");
        db=dbhandler.getwritabledatabase();
    }
    public void close(){
        Log.i(LOGTAG,"Database Closed");
        dbhandler.close();
    }

    @Override
    public void onUpgrade(SQLiteDatabase sqLiteDatabase,int i,int i1) {
        sqLiteDatabase.execSQL("DROP TABLE IF EXISTS " + FavoriteContract.FavoriteEnty.TABLE_NAME);
        onCreate(sqLiteDatabase);
    }

    public void addFavorite(CategoryItem movie){
        SQLiteDatabase db = this.getwritabledatabase();

        Contentvalues values = new Contentvalues();
        values.put(FavoriteContract.FavoriteEnty.COLUMN_MOVIEID,movie.getId());
        values.put(FavoriteContract.FavoriteEnty.COLUMN_LIKE,movie.getLike());
        values.put(FavoriteContract.FavoriteEnty.COLUMN_TITLE,movie.getTitle());
        values.put(FavoriteContract.FavoriteEnty.COLUMN_BACKDROP_PATH,movie.getBackdrop());
        values.put(FavoriteContract.FavoriteEnty.COLUMN_SUMMARY,movie.getSummary());

        db.insert(FavoriteContract.FavoriteEnty.TABLE_NAME,values);
        db.close();
    }

    public void deleteFavorite(int id){
        SQLiteDatabase db = this.getwritabledatabase();
        db.delete(FavoriteContract.FavoriteEnty.TABLE_NAME,FavoriteContract.FavoriteEnty.COLUMN_MOVIEID+ "=" + id,null);
    }
    public boolean getById(int id) {
        String sql = "select * from orders where id = ?";
        String[] args = { String.valueOf(id) };
        return true;
    }


    public List<CategoryItem> getallFavorite(){
        String[] columns = {
                FavoriteContract.FavoriteEnty._ID,FavoriteContract.FavoriteEnty.COLUMN_MOVIEID,FavoriteContract.FavoriteEnty.COLUMN_LIKE,FavoriteContract.FavoriteEnty.COLUMN_TITLE,FavoriteContract.FavoriteEnty.COLUMN_BACKDROP_PATH,FavoriteContract.FavoriteEnty.COLUMN_SUMMARY
        };
        String sortOrder = FavoriteContract.FavoriteEnty._ID + " ASC";
        List<CategoryItem> favoriteList = new ArrayList<>();
        SQLiteDatabase db = this.getReadableDatabase();
        Cursor cursor = db.query(
                FavoriteContract.FavoriteEnty.TABLE_NAME,columns,sortOrder);

        while(cursor.moveToNext())
        {
            CategoryItem movie = new CategoryItem();
            movie.setId(Integer.parseInt(cursor.getString(cursor.getcolumnIndex(FavoriteContract.FavoriteEnty.COLUMN_MOVIEID))));
            movie.setTitle(cursor.getString(cursor.getcolumnIndex(FavoriteContract.FavoriteEnty.COLUMN_LIKE)));
            movie.setTitle(cursor.getString(cursor.getcolumnIndex(FavoriteContract.FavoriteEnty.COLUMN_TITLE)));
            movie.setBackdrop(cursor.getString(cursor.getcolumnIndex(FavoriteContract.FavoriteEnty.COLUMN_BACKDROP_PATH)));
            movie.setSummary(cursor.getString(cursor.getcolumnIndex(FavoriteContract.FavoriteEnty.COLUMN_SUMMARY)));

            favoriteList.add(movie);
        }
//        cursor.close();
//        db.close();
        return favoriteList;
    }

// This is my recyclerview adapter class

// This is my recyclerview adapter class
public class FavoriteMovieAdapter extends RecyclerView.Adapter<FavoriteMovieAdapter.ViewHolder>{
    Context context;
    List<CategoryItem> favoriteMovieList;
//    DataFavorite dataFavoriteList;

    public FavoriteMovieAdapter(Context context,List<CategoryItem> favoriteMovieList) {
        this.context = context;
        this.favoriteMovieList = favoriteMovieList;
    }
    public FavoriteMovieAdapter(Context context){
        this.context = context;
        favoriteMovieList=new ArrayList<>();
    }
    public void setMovies(List<CategoryItem> favoriteMovieList){
        this.favoriteMovieList=favoriteMovieList;
    }

    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent,int viewType) {
        return new ViewHolder(LayoutInflater.from(context).inflate(R.layout.item_favorite,parent,false));
    }

    @Override
    public void onBindViewHolder(@NonNull FavoriteMovieAdapter.ViewHolder holder,@SuppressLint("RecyclerView") int position) {
        holder.name.setText(favoriteMovieList.get(position).getMovieName());
        holder.summary.setText(favoriteMovieList.get(position).getSummary());
        Glide.with(context).load(favoriteMovieList.get(position).getBackdrop()).into(holder.poster);

        holder.poster.setOnClicklistener(new View.OnClicklistener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(context,MovieDetail.class);
                intent.putExtra("movieid",favoriteMovieList.get(position).getId());
//                intent.putExtra("like",favoriteMovieList.get(position).getLike());
                intent.putExtra("title",favoriteMovieList.get(position).getMovieName());
                intent.putExtra("backdrop",favoriteMovieList.get(position).getBackdrop());
                intent.putExtra("summary",favoriteMovieList.get(position).getSummary());

                context.startactivity(intent);
            }
        });
    }

    @Override
    public int getItemCount() {
        if(favoriteMovieList!=null)
            return favoriteMovieList.size();
        else
            return 0;
    }

    public class ViewHolder extends RecyclerView.ViewHolder {
        ImageView poster;
        Integer like;
        TextView name,summary;
        public ViewHolder(@NonNull View view) {
            super(view);
            poster= view.findViewById(R.id.posterFavorite);
            name= view.findViewById(R.id.nameFavorite);
            summary= view.findViewById(R.id.summaryFavorite);

        }
    }

// this is FavoriteFragment.java

// this is FavoriteFragment.java
public class    FavoriteFragment extends Fragment {
    private RecyclerView recFavorite;
    List<CategoryItem> favoriteMovieList;
    View view;
    JsonVNPT jsonVNPT = new JsonVNPT();
    FavoriteMovieAdapter favoriteMovieAdapter;
    DataFavorite dbFavorite;

    public FavoriteFragment() {
        // Required empty public constructor
    }

    @Override
    public void onSaveInstanceState(@NonNull Bundle outState) {
        super.onSaveInstanceState(outState);
    }

    @Override
    public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState) {
        view = inflater.inflate(R.layout.fragment_favorite,container,false);


//        new
        dbFavorite = new DataFavorite(view.getcontext());
//        Intent intent= Intent.getIntent();
//new
        recFavorite = view.findViewById(R.id.recFavorite);

        RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(view.getcontext(),RecyclerView.VERTICAL,false);
        recFavorite.setLayoutManager(layoutManager);
        favoriteMovieAdapter = new FavoriteMovieAdapter(view.getcontext());
        favoriteMovieList=dbFavorite.getallFavorite();

        favoriteMovieAdapter.setMovies(favoriteMovieList);
        recFavorite.setadapter(favoriteMovieAdapter);

        return view;
    }

}
gengwenshuang 回答:想要将 Recyclerview Sqlite 数据传递给片段?

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/1073.html

大家都在问