dimanche 8 novembre 2015

Not getting data from sqlite when i'm trying to pass them to another activity using onItemClickListener

I'm trying to pass ID from SQLite from one activity to another in RecyclerView in OnItemClickListener, but i'm not getting data in reciever activity.

This is the Activity from where i'm sending data:

    public class MainActivity extends AppCompatActivity implements View.OnClickListener{

    public final static String KEY_EXTRA_BIRTHDAY_ID = "KEY_EXTRA_BIRTHDAY_ID";

    RecyclerView mRecyclerView;
    RecyclerView.LayoutManager mLayoutManager;
    GridAdapter mGridAdapter;
    DBHelper dbh;
    String firstName;
    Animation shakeAnimation;
    ImageView deleteImage;
    List<Birthday> birthdays;
    int birthdayId;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_activity);

        initAddImage();
        dbh = new DBHelper(this);

        initRecyclerView();
        initDeleteImage();

    }

    public List<Birthday> getData() {
        birthdays = new ArrayList<>();
        Birthday birthday = null;
        Cursor c = dbh.getBirthdayData();
        if (c != null) {
            while (c.moveToNext()) {
                int nameIndex = c.getColumnIndex(dbh.BIRTHDAY_NAME);
                String nameText = c.getString(nameIndex);
                this.firstName = nameText;

                int lastNameIndex = c.getColumnIndex(dbh.BIRTHDAY_LAST_NAME);
                String lastNameText = c.getString(lastNameIndex);

                birthday = new Birthday();
                birthday.setNAME(nameText);
                birthday.setLAST_NAME(lastNameText);
                birthdays.add(birthday);

            }
        }
        return birthdays;
    }

    private void initRecyclerView(){
        mRecyclerView = (RecyclerView) findViewById(R.id.recycler_view);
        mRecyclerView.setItemAnimator(new ScaleInAnimator());

        // The number of Columns
        mRecyclerView.setHasFixedSize(true);
        mLayoutManager = new GridLayoutManager(this, 3);
        mRecyclerView.setLayoutManager(mLayoutManager);

        mGridAdapter = new GridAdapter(getData());

        mRecyclerView.setAdapter(mGridAdapter);
        mGridAdapter.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(View view, int position) {
                Toast.makeText(MainActivity.this, "It works!", Toast.LENGTH_SHORT).show();
                Cursor cursorItem = dbh.getBirthdayId(position);
                if( cursorItem != null && cursorItem.moveToFirst() ){
                    birthdayId = cursorItem.getInt(cursorItem.getColumnIndex(DBHelper.BIRTHDAY_ID));
                    cursorItem.close();
                }
                Intent intent = new Intent(MainActivity.this, EditBirthdayActivity.class);
                intent.putExtra(KEY_EXTRA_BIRTHDAY_ID, birthdayId);
                startActivity(intent);
            }
        });
    }

    private void initAddImage(){
        ImageView addImage = (ImageView) findViewById(R.id.add_image);
        addImage.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MainActivity.this, AddBirthday.class);
                startActivity(intent);
            }
        });
    }

    private void initDeleteImage(){
        deleteImage = (ImageView) findViewById(R.id.delete_image);
        shakeAnimation = AnimationUtils.loadAnimation(MainActivity.this, R.anim.shake_animation);
        deleteImage.setOnClickListener(this);
    }

    @Override
    protected void onResume() {
        super.onResume();
        initRecyclerView();
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.delete_image:
                mRecyclerView.startAnimation(shakeAnimation);
                if (v.equals(deleteImage)) {
                    mGridAdapter.setOnItemClickListener(new OnItemClickListener() {
                        @Override
                        public void onItemClick(View view, int position) {
                            dbh.deleteBirthday(position);
                            mGridAdapter.removeItem(position);
                            mRecyclerView.clearAnimation();
                        }
                    });
                }
        }
    }
}

And this is the reciever Activity:

    public class EditBirthdayActivity extends AppCompatActivity implements View.OnClickListener {

    private DBHelper dbh;
    EditText inputFirstName;
    EditText inputLastName;

    Button saveButton;
    Button editButton, deleteButton;

    int birthdayId;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        birthdayId = getIntent().getIntExtra(MainActivity.KEY_EXTRA_BIRTHDAY_ID, 0);

        setContentView(R.layout.edit_birthday);

        dbh = new DBHelper(this);
        init();

        if (birthdayId > 0) {

            saveButton.setVisibility(View.GONE);
            editButton.setVisibility(View.VISIBLE);
            deleteButton.setVisibility(View.VISIBLE);

            Cursor rs = dbh.getBirthdayId(birthdayId);
            rs.moveToFirst();

            String getName = rs.getString(rs.getColumnIndex(DBHelper.BIRTHDAY_NAME));
            String getLastName = rs.getString(rs.getColumnIndex(DBHelper.BIRTHDAY_LAST_NAME));

            if (!rs.isClosed()) {
                rs.close();
            }

            inputFirstName.setText(getName);
            inputFirstName.setFocusable(false);
            inputFirstName.setClickable(false);
            inputLastName.setText(getLastName);
            inputLastName.setFocusable(false);
            inputLastName.setClickable(false);

        }
    }

    private void init(){
        inputFirstName = (EditText) findViewById(R.id.input_first_name);
        inputLastName = (EditText) findViewById(R.id.input_last_name);

        saveButton = (Button) findViewById(R.id.save_button);
        editButton = (Button) findViewById(R.id.edit_button);
        deleteButton = (Button) findViewById(R.id.delete_button);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.save_button:
                saveBirthday();
                return;
            case R.id.edit_button:
                saveButton.setVisibility(View.VISIBLE);
                editButton.setVisibility(View.GONE);
                deleteButton.setVisibility(View.GONE);
                inputFirstName.setEnabled(true);
                inputFirstName.setFocusableInTouchMode(true);
                inputFirstName.setClickable(true);

                inputLastName.setEnabled(true);
                inputLastName.setFocusableInTouchMode(true);
                inputLastName.setClickable(true);
                return;
            case R.id.delete_button:
                AlertDialog.Builder builder = new AlertDialog.Builder(EditBirthdayActivity.this);
                builder.setMessage(R.string.delete_message)
                        .setPositiveButton(R.string.yes, new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                dbh.deleteBirthday(birthdayId);
                                Toast.makeText(EditBirthdayActivity.this, "Deleted Successfully", Toast.LENGTH_SHORT).show();
                                Intent intent = new Intent(EditBirthdayActivity.this, MainActivity.class);
                                intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                                startActivity(intent);
                            }
                        })
                        .setNegativeButton(R.string.no, new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                // User cancelled the dialog..
                            }
                        });
                AlertDialog d = builder.create();
                d.setTitle(R.string.delete_title);
                d.show();
                return;
        }
    }

    public void saveBirthday(){
        String getName, getLastName;
        getName = inputFirstName.getText().toString();
        getLastName = inputLastName.getText().toString();
        if (birthdayId > 0) {
            if (dbh.updateBirthday(birthdayId, inputFirstName.getText().toString(),
                    inputLastName.getText().toString())) {
                Toast.makeText(EditBirthdayActivity.this, "Updated Successfully", Toast.LENGTH_SHORT).show();
                Intent intent = new Intent(EditBirthdayActivity.this, MainActivity.class);
                intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                startActivity(intent);
            } else {
                Toast.makeText(EditBirthdayActivity.this, "Update Failed", Toast.LENGTH_SHORT).show();
            }
        } else {
            if (dbh.insertBirthday(getName, getLastName)){
                Toast.makeText(EditBirthdayActivity.this, "Birthday Inserted!", Toast.LENGTH_SHORT).show();
            } else  {
                Toast.makeText(EditBirthdayActivity.this, "Couldn't insert Birthday!", Toast.LENGTH_SHORT).show();
            }
            Intent intent = new Intent(EditBirthdayActivity.this, MainActivity.class);
            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            startActivity(intent);
        }
    }
}

Aucun commentaire:

Enregistrer un commentaire