Удаление строки из представления переработчика и sqlite - PullRequest
0 голосов
/ 17 марта 2020

Это мой класс адаптера:

public class adapter_cgpa extends RecyclerView.Adapter<adapter_cgpa.Viewholder> {

    ArrayList<POJO> cgpaArrayList;


    public adapter_cgpa(ArrayList<POJO> cgpaArrayList) {
        this.cgpaArrayList = cgpaArrayList;
    }

    @NonNull
    @Override
    public adapter_cgpa.Viewholder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

        View listitem = LayoutInflater.from(parent.getContext()).inflate(R.layout.recycler_cgpa, parent, false);
        return new Viewholder(listitem);

    }

    @Override
    public void onBindViewHolder(@NonNull adapter_cgpa.Viewholder holder, int position) {

        POJO cgpa= cgpaArrayList.get(position);
        holder.cname.setText(cgpa.getCname());
        holder.no_of_sems.setText(cgpa.getNo_of_sems());
        holder.cgpa.setText(cgpa.getCgpa());
        holder.percentage.setText(cgpa.getPercentage());
        holder.schemec.setText(cgpa.getSchemec());


    }

    @Override
    public int getItemCount() {
        return cgpaArrayList.size();
    }

    public class Viewholder extends RecyclerView.ViewHolder {

        TextView cname, no_of_sems, cgpa, percentage,schemec;
        ImageButton btndelete2;


        public Viewholder(@NonNull View itemView) {
            super(itemView);

            cname=(TextView)itemView.findViewById(R.id.name);
            no_of_sems=(TextView)itemView.findViewById(R.id.no_of_sem);
            cgpa=(TextView)itemView.findViewById(R.id.textView49);
            percentage=(TextView)itemView.findViewById(R.id.textView55);
            schemec=(TextView)itemView.findViewById(R.id.scheme2);
            btndelete2=(ImageButton)itemView.findViewById(R.id.btndelete2);

            btndelete2.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                    final String snc = cname.getText().toString();
                    final String semrc = no_of_sems.getText().toString();
                    final String schc = schemec.getText().toString();

                    dbmanager db= new dbmanager(v.getContext());
                    db.delete2(snc,semrc,schc);
                }
            });

        }



    }

}

А это мой класс dbmanager:

public class dbmanager extends SQLiteOpenHelper {

    String sgpa_table="create table Sgpa (sname text, semester text, sgpa  text,percent text, schemes text, primary key(sname,semester,schemes))";
    String cgpa_table="create table Cgpa (cname text, no_of_sems int, cgpa text, percentage text, schemec text, primary key(cname,no_of_sems,schemec))";

    public dbmanager(@Nullable Context context) {
        super(context, "Student", null, 1);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(sgpa_table);
        db.execSQL(cgpa_table);

    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }



    public Cursor fetch_data1() {
        SQLiteDatabase db = this.getWritableDatabase();
        String query = "Select*FROM Sgpa" ;
        Cursor cursor = db.rawQuery(query,null);

        return cursor;
    }

    public Cursor fetch_data2() {
        SQLiteDatabase db = this.getWritableDatabase();
        String query = "Select*FROM Cgpa" ;
        Cursor cursor = db.rawQuery(query,null);
//        if (cursor != null) {
//            cursor.moveToFirst();
//        }
        return cursor;

    }


    public boolean delete2(String snc, String semrc, String schc){
        SQLiteDatabase db=this.getWritableDatabase();
        int result = db.delete("Cgpa", "cname= ? and no_of_sems = ? and schemec = ?", new String[] {snc, semrc, schc});
        return result > 0;
    }

}

Это не работает. Я думаю, что вместо передачи значения в textview мне нужно передать позицию элемента, то есть идентификатор строки и идентификатор столбца, но я не знаю, как это сделать. Может ли кто-нибудь помочь мне с этим?

1 Ответ

0 голосов
/ 17 марта 2020

Вы должны добавить notifyDataSetChanged(); после удаления cgpaArrayList.remove(position);

Редактировать

  public class adapter_cgpa extends RecyclerView.Adapter<adapter_cgpa.Viewholder> {

        ArrayList<POJO> cgpaArrayList;


        public adapter_cgpa(ArrayList<POJO> cgpaArrayList) {
            this.cgpaArrayList = cgpaArrayList;
        }

        @NonNull
        @Override
        public adapter_cgpa.Viewholder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

            View listitem = LayoutInflater.from(parent.getContext()).inflate(R.layout.recycler_cgpa, parent, false);
            return new Viewholder(listitem);

        }

        @Override
        public void onBindViewHolder(@NonNull adapter_cgpa.Viewholder holder, final int position) {

            POJO cgpa = cgpaArrayList.get(position);
            holder.cname.setText(cgpa.getCname());
            holder.no_of_sems.setText(cgpa.getNo_of_sems());
            holder.cgpa.setText(cgpa.getCgpa());
            holder.percentage.setText(cgpa.getPercentage());
            holder.schemec.setText(cgpa.getSchemec());
            btndelete2.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                    delete (position);

                }
            });

        }

        @Override
        public int getItemCount() {
            return cgpaArrayList.size();
        }

        public class Viewholder extends RecyclerView.ViewHolder {

            TextView cname, no_of_sems, cgpa, percentage, schemec;
            ImageButton btndelete2;


            public Viewholder(@NonNull View itemView) {
                super(itemView);

                cname = (TextView) itemView.findViewById(R.id.name);
                no_of_sems = (TextView) itemView.findViewById(R.id.no_of_sem);
                cgpa = (TextView) itemView.findViewById(R.id.textView49);
                percentage = (TextView) itemView.findViewById(R.id.textView55);
                schemec = (TextView) itemView.findViewById(R.id.scheme2);
                btndelete2 = (ImageButton) itemView.findViewById(R.id.btndelete2);


            }


        }
        public void delete(final int position) {
            cgpaArrayList.remove(position);
            notifyDataSetChanged();
            final String snc = cname.getText().toString();
            final String semrc = no_of_sems.getText().toString();
            final String schc = schemec.getText().toString();

            dbmanager db = new dbmanager(v.getContext());
            db.delete2(snc, semrc, schc);
        }

    }
}

Надеюсь, это поможет вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...