samedi 13 février 2016

checkbox listener in listview java using adapter to update database when it's checked

i have a problem with my java code, i want to make a listener for my checkbox in listview to update database when it's checked or unchecked and my code does'nt work yet. it can not send the check sign from adapter to the activity. Thanks
Here my code :

Activity.java

listView.setAdapter(ayatAdapter);
    getData();

    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            Ayat ayat = ayats.get(position);
            if(listView.isItemChecked(position)){
                Log.d(TAG, "Status ayat = " + ayat.getId());
                try{
                    int state=0;
                    if(ayat.getStatus()==true)
                        state=1;
                    else
                        state=0;
                    db.execSQL("UPDATE ayat SET status = " + state + " WHERE _id = " + ayat.getId() + "'", null);
                }catch (Exception e){
                    e.printStackTrace();
                }
            }else{
                Log.d(TAG, "Status ayat = " + ayat.getId());
                try{
                    int state=0;
                    if(ayat.getStatus()==true)
                        state=1;
                    else
                        state=0;
                    db.execSQL("UPDATE ayat SET status = " + state + " WHERE _id = " + ayat.getId() + "'", null);

                }catch (Exception e){
                    e.printStackTrace();
                }
            }
        }
    });



AyatAdapter.java

@Override
public View getView(final int position, View convertView, ViewGroup parent) {
    View row = convertView;

    /**ViewHolder holder = null;
    holder = new ViewHolder();**/
    Ayat ayat = ayats.get(position);
    if(row==null){
        LayoutInflater inflater = (LayoutInflater) context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        row = inflater.inflate(R.layout.row_ayat_check, parent, false);
        Log.v("row", String.valueOf(position));

        //ayatView = (TextView) row.findViewById(R.id.isi_ayat);
        chk = (CheckBox) row.findViewById(R.id.checkBox);

    }else{

    }

    chk.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            CheckBox cb = (CheckBox) v;
            if (cb.isChecked()) {
                Log.d(TAG, "Status ayat = " + ayats.get(position).getId() + " statusnya " + cb.isChecked());

                int state = 0;
                if (cb.isChecked() == true)
                    state = 1;
                else
                    state = 0;
                Log.d(TAG, "Status ayat = " + state);
            } else {
                Log.d(TAG, "Status ayat = " + ayats.get(position).getId() + " statusnya " + cb.isChecked());
                try {
                    int state = 0;
                    if (cb.isChecked() == true)
                        state = 1;
                    else
                        state = 0;
                    //db.execSQL("UPDATE ayat SET status = " + state + " WHERE _id = " + ayats.get(position).getId(), null);
                    Log.d(TAG, "Status ayatnya = " + state);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }

        }
    });
    //ayatView.setText(ayat.getIsi_ayat());
    chk.setText(ayat.getIsi_ayat());
    chk.setChecked(ayat.getStatus());
    chk.setTag(ayat);

    return row;
}



Ayat.class

public int getId() {
    return id;
}

public String getIsi_ayat() {
    return isi_ayat;
}

public int getId_surat() {
    return id_surat;
}

public int getNo_surat() {
    return no_surat;
}

public boolean getStatus() {
    return status;
}

public void setId(int id) {
    this.id = id;
}

public void setIsi_ayat(String isi_ayat) {
    this.isi_ayat = isi_ayat;
}

public void setId_surat(int id_surat) {
    this.id_surat = id_surat;
}

public void setNo_surat(int no_surat) {
    this.no_surat = no_surat;
}

public void setStatus(boolean status) {
    this.status = status;
}

Aucun commentaire:

Enregistrer un commentaire