2017-01-12 2 views
3

Я хочу добавить фотографии в мое любимое занятие, когда пользователь нажимает на картинку. Пока я могу получить данные и отображать их, но по какой-то причине всякий раз, когда я нажимаю на изображение, он отображает понравившийся образ, однако, когда я перепроверяю любимое действие, нажимая на него, он показывает пустой. Вот небольшая блок-схема.Android: отправить данные из адаптера в Activity

imageOnTap выполнен на уровне RecyclerAdapter класс. У меня есть мои Favorite activity и MainActivity. Любая помощь будет оценена. Благодаря

Вот мой 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); 

     } 
+0

, если (ID == R.id.nav_favorite) { Намерение Намерение = новый Намерение (это, favorite.class); startActivity (намерение); } у вас отсутствует значение намерения onNavigationItemSelected –

+0

замените 'Intent.EXTRA_TEXT' своим собственным постоянным ключом, таким как MY_IMAGE_URL'. –

+0

@AmrutBidri, вы имеете в виду, что я должен так измениться ->. intent.putExtra ("MyImage", albums.get (поз) .getImage()); – user7062312

ответ

1

Если вы проверяете любимое занятие из меню нав, то она не будет покажите что-нибудь после того, как вы не пройдете никаких намерений extr как в этом. Отображается ли это при нажатии на изображение? Вы получаете здесь значения параметра params null?

+0

, когда я нажимаю на изображение, он отображает изображение в любимом действии – user7062312

+0

, вы должны сохранить это значение намерения в shared pref или назначить его статической константе, если вы хотите использовать его в будущем. Передайте это значение в намерении любимой деятельности, когда вы открываете из меню. –

+0

так что я должен сохранить значение намерения в моем классе RecyclerAdapter с помощью sharedPref и передать это значение любимому занятию? – user7062312

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)); 
+0

Извините, но где я его помещаю? – user7062312

+0

@ user7062312 обновлен. Везде set detting var этому значению – Vyacheslav

+0

Извините, m не получается, что вы пытаетесь сказать – user7062312

Смежные вопросы