2016-03-31 15 views
3

Android için bir müzik çalar uygulaması geliştiriyorum. Bir şarkı tamamlandığında bir yayın gönderiyorum ve bir etkinlikte oynatma/duraklatma simgesini bir satırda buna göre değiştirmek istiyorum.Erişim Geri Dönüşümcügörüntüleyici, etkinlikten

Etkinlik, sonraki şarkının yayınını alır, ancak satırın etkinlikten nasıl güncelleneceğini bilmiyorum.

protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_now_playing); 

     mStaggerGridLayoutManager = new StaggeredGridLayoutManager(1, StaggeredGridLayoutManager.VERTICAL); 

     mRecyclerView = (RecyclerView) findViewById(R.id.now_playing_songs_list); 
     mRecyclerView.setLayoutManager(mStaggerGridLayoutManager); 
     mAdapter = new ListAdapter(this, mSongList) 
     mRecyclerView.setAdapter(mAdapter); 
     mReciever = new BroadcastReceiver() { 
      @Override 
      public void onReceive(Context context, Intent intent) { 
       if(intent.getAction().equals(MusicService.SONG_FINISHED)) { 
        //WANT TO CHANGE ROW ICON HERE 
       } 
      } 
     }; 

Etkinlik içinde mAdapter içinde tanımlanan görüntüleyiciye nasıl erişirim?

+0

Bu eylemi işlemek için ListAdapter sınıfınızda genel bir yöntem yapın ve bu yöntemi Etkinlikte onReceive() yönteminden çağırın. –

+1

büyük olasılıkla viewHolder'a erişmek istemezsiniz. Bunun yerine, bağdaştırıcıdaki veri girişlerinden birini değiştirmek ve sonra öğenin değiştirdiği bağdaştırıcıyı bilgilendirmek istiyorsunuz. – gMale

cevap

2

Modelinizi aktivitenizden değiştirmeniz ve sonra görünümü güncellemesi için adaptöre danışmanız gerekir. Single responsibility, oop tasarım ilkelerinden biridir. Örneğin, tüm şarkı nesneleri, isPlaying numaralı boolean değer adına sahip olmalıdır. Kullanıcı bir şarkı çalarken, true olarak ayarlanmalıdır. broadcast'u aldığınızda, bu şarkıyı listenizden bulup boolean'u false'a ayarlayıp mAdapter.notifyDataSetChanged()'u arayın. getView yönteminde, bu değişkeni kontrol edip duraklat veya çalma durumunu söylemek için UI ayarlayınız.

İlgili konular