user7062312
user7062312

Reputation: 115

Android: send data from adapter class to Activity

I want to add pictures to my favorite activity when a user tap on a picture. So far I'm able to get the data and display it but for some reason whenever I tap on an image it displays the favorited image, however, when I recheck the favorite activity by clicking on it, it shows empty. Here's the little flow chart.

imageOnTap is implemented on RecyclerAdapter class. I have my Favorite activity and MainActivity.Any help would be appreciated. Thanks

Here's my MyRecyclerAdapter class

     @Override
        public void onBindViewHolder(MyViewHolder holder, int position) {

          holder.nameTxt.setText(albums.get(position).getName());
          holder.img.setImageResource(albums.get(position).getImage());

         //listener
            holder.setItemClickListener(new ItemClickListener() {
                @Override
                public void onItemClick(View v, int pos) {
                    Toast.makeText(c,albums.get(pos).getName() + " ,added to favorite ",Toast.LENGTH_SHORT).show();



SharedPreferences settings = c.getSharedPreferences(PREFS_NAME,0);
            SharedPreferences.Editor editor = settings.edit();
            editor.putInt("favorite",albums.get(pos).getImage());
            editor.commit();

            Toast.makeText(c,albums.get(pos).getName() + " ,added to favorite ",Toast.LENGTH_SHORT).show();

            Intent intent = new Intent(c, favorite.class);
           // intent.putExtra(Intent.EXTRA_TEXT, albums.get(pos).getImage());
            c.startActivity(intent);




                }
            });
        }

Here's my favorite activity

  public class favorite extends AppCompatActivity {
        int favImage;

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

                ImageView displayImage = (ImageView) findViewById(R.id.movieImage);




         SharedPreferences settings = getSharedPreferences(PREFS_NAME,0);

            displayImage.setImageResource(settings.getInt("Favorite", 0));


    //            Intent intent = getIntent();
    //            if (intent.hasExtra(Intent.EXTRA_TEXT)) {
    //                favImage = intent.getIntExtra(Intent.EXTRA_TEXT,image);
    //                displayImage.setImageResource(favImage);
    //
    //            }
             }
        }

Here's my MainActivity

public boolean onNavigationItemSelected(MenuItem item) {
        // Handle navigation view item clicks here.
        int id = item.getItemId();


        if (id == R.id.nav_favorite) {

            Intent intent = new Intent(this,favorite.class);
            startActivity(intent);

        }

Upvotes: 3

Views: 389

Answers (2)

Vyacheslav
Vyacheslav

Reputation: 27211

Use those preferences:

SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(ctx.getApplicationContext());

In your case it might be different activities observe different areas of settings.

THAT IS:

use:

SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(ctx.getApplicationContext());
            SharedPreferences.Editor editor = settings.edit();
            editor.putInt("favorite",albums.get(pos).getImage());
            editor.commit();

instead of:

SharedPreferences settings = c.getSharedPreferences(PREFS_NAME,0);
            SharedPreferences.Editor editor = settings.edit();
            editor.putInt("favorite",albums.get(pos).getImage());
            editor.commit();

AND this:

SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(ctx.getApplicationContext());

            displayImage.setImageResource(settings.getInt("Favorite", 0));

instead of:

  SharedPreferences settings = getSharedPreferences(PREFS_NAME,0);

            displayImage.setImageResource(settings.getInt("Favorite", 0));

Upvotes: 1

Ayush P Gupta
Ayush P Gupta

Reputation: 1549

If you are checking favourite activity from nav menu then it will not display anything afterall you are not passing any intent extras in it. Is it being display when you click the image? Are you getting intent params null here?

Upvotes: 1

Related Questions