Android:将数据从适配器类发送到Activity

时间:2017-01-12 03:48:29

标签: java android

我想在用户点按图片时将图片添加到我最喜欢的活动中。到目前为止,我能够获取数据并显示它但是出于某种原因,每当我点击图像时它会显示收藏的图像,但是,当我通过点击它重新检查收藏的活动时,它显示为空。 这是小流程图。

imageOnTap已在RecyclerAdapter课程上实施。我有Favorite activityMainActivity。如有任何帮助,我们将不胜感激。感谢

这是我的MyRecyclerAdapter班级

     @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);




                }
            });
        }

这是我最喜欢的活动

  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);
    //
    //            }
             }
        }

这是我的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);

        }

2 个答案:

答案 0 :(得分:1)

如果您正在从导航菜单中查看喜欢的活动,那么它不会显示任何事情,因为您没有在其中传递任何意图的额外内容。单击图像时是否显示?你在这里得到意图params null吗?

答案 1 :(得分:1)

使用这些偏好:

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

在您的情况下,可能会有不同的活动观察不同的设置区域。

那是:

使用:

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

而不是:

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

和 这样:

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

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

而不是:

  SharedPreferences settings = getSharedPreferences(PREFS_NAME,0);

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