2016-03-23 27 views
0

Her görünümün bir düğmesinin bulunduğu bir geri dönüştürme izleyiciye sahibim. Herhangi bir görünümde düğmesine tıklarsam geridönüşüm görünümünün tüm görünümlerinin güncellenmesi için bir fuc = nctionality uygulamak istiyorum. Bu nasıl başarılabilir? Bu benim Sen değiştin herhangi veri kümesi hakkında Adaptörü bilgilendirmeniz gerekiyor onBindViewHolderRecylerView bağdaştırıcısındaki veriler nasıl güncellenir

public class StoryItemAdapter extends RecyclerView.Adapter<StoryItemAdapter.ViewHolder> { 

LayoutInflater inflater; 
Context context; 
Bitmap bm; 
ImageLoader imloader; 
static ArrayList<StoryDetails> stories; 


OnItemClickListener mItemClickListener; 
public StoryItemAdapter(Context context,ArrayList<StoryDetails> stories) { 
    this.context = context; 
    this.stories = stories; 
    inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    imloader = ImageLoader.getInstance(); 
    imloader.init(ImageLoaderConfiguration.createDefault(context)); 


} 

@Override 
public long getItemId(int position) { 

    return 0; 
} 

@Override 
public int getItemCount() { 

    return stories != null ? stories.size() : 0; 
} 

@SuppressWarnings("deprecation") 
@Override 
public void onBindViewHolder(ViewHolder holder, int position) { 


    if(stories.get(position).getType()==null) { 
     holder.user_handle.setText(stories.get(position).getUsername() + "(" + stories.get(position).getHandle() + ")"); 

     File file = imloader.getDiscCache().get(stories.get(position).getImage()); 
     if (!file.exists()) { 
      DisplayImageOptions options = new DisplayImageOptions.Builder() 
        .cacheOnDisc() 
        .build(); 
      imloader.displayImage(stories.get(position).getImage(), holder.image, options); 
     } else { 
      holder.image.setImageURI(Uri.parse(file.getAbsolutePath())); 
     } 

     holder.about.setText(stories.get(position).getAbout()); 
     holder.followers.setText("Followers\n\r" + stories.get(position).getFollowers()); 
     holder.following.setText("Following\n\r" + stories.get(position).getFollowing()); 
    } 
    else 
    { 
     holder.user_handle.setText(stories.get(position).getTitle()); 

     File file = imloader.getDiscCache().get(stories.get(position).getSi()); 
     if (!file.exists()) { 
      DisplayImageOptions options = new DisplayImageOptions.Builder() 
        .cacheOnDisc() 
        .build(); 
      imloader.displayImage(stories.get(position).getSi(), holder.image, options); 
     } else { 
      holder.image.setImageURI(Uri.parse(file.getAbsolutePath())); 
     } 

     holder.about.setText(stories.get(position).getDescription()); 
     holder.followers.setText("Likes \n\r" + stories.get(position).getLikes_count()); 
     holder.following.setText("Comments \n\r" + stories.get(position).getComment_count()); 


    } 

    if(stories.get(position).getIs_following()) 
    { 
     holder.follow.setText("Following"); 
    } 
    else 
     holder.follow.setText("Follow"); 

    final int p = position; 
    final ViewHolder h = holder; 

    holder.follow.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      if(stories.get(p).getIs_following()) 
      { 
       stories.get(p).setIs_following(false); 
       h.follow.setText("Follow"); 


      } 
      else { 
       stories.get(p).setIs_following(true); 
       h.follow.setText("Following"); 
      } 


      for(int i =0;i <stories.size();i++) { 
       if (stories.get(p).getDb() != null) { 

        if(stories.get(p).getDb().equals(stories.get(i).getId())) 
        { 
         stories.get(p).setIs_following(stories.get(i).getIs_following()); 

        } 


       } 
      } 



     } 
    }); 


} 



@Override 
public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { 
    View itemView = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.story_adapter, viewGroup, 
      false); 
    return new ViewHolder(itemView); 

} 


public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { 

    ImageView image; 
    TextView user_handle, about, followers,following,userSince; 
    Button follow; 


    public ViewHolder(View itemView) { 
     super(itemView); 
     user_handle = (TextView) itemView.findViewById(R.id.user_handle); 
     about = (TextView) itemView.findViewById(R.id.about); 
     followers = (TextView) itemView.findViewById(R.id.followers); 
     following = (TextView) itemView.findViewById(R.id.following); 
     // userSince = (TextView) itemView.findViewById(R.id.user_since); 
     image = (ImageView) itemView.findViewById(R.id.user_image); 
     follow =(Button) itemView.findViewById(R.id.follow); 



     RelativeLayout.LayoutParams rlp = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, 
       RelativeLayout.LayoutParams.WRAP_CONTENT); 

     image.setLayoutParams(rlp); 
     image.setAdjustViewBounds(true); 
     image.setScaleType(ImageView.ScaleType.FIT_CENTER); 

     itemView.setOnClickListener(this); 

    } 

    @Override 
    public void onClick(View v) { 



     if (mItemClickListener != null) { 
      mItemClickListener.onItemClick(v, getPosition()); 
     } 
    } 

} 

public interface OnItemClickListener { 
    public void onItemClick(View view , int position); 
} 

public void SetOnItemClickListener(final OnItemClickListener mItemClickListener) { 
    this.mItemClickListener = mItemClickListener; 
} 

}

+0

mesaj güncellenecektir tüm adaptör –

+0

@NaveenTamrakar – Payal

+0

Sana ihtiyacım var: RecyclerView.getChildAt (int index) ..... Daha İpucu => OnClick itibaren başka bir yöntemi çağırabilirsiniz updateMyViews() ve bu döngü içinde tüm dizin değerleri (arraylist boyutuna kadar) aracılığıyla yukarıdaki işlevi kullanarak görünüm elde edin ve bunları güncelleyin. Daha sonra gerekirse, – kishorepatel

cevap

0

yapmış budur.

bu deneyin ..

holder.follow.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      if(stories.get(p).getIs_following()) 
      { 
       stories.get(p).setIs_following(false); 
       h.follow.setText("Follow"); 


      } 
      else { 
       stories.get(p).setIs_following(true); 
       h.follow.setText("Following"); 
      } 


      for(int i =0;i <stories.size();i++) { 
       if (stories.get(p).getDb() != null) { 

        if(stories.get(p).getDb().equals(stories.get(i).getId())) 
        { 
         stories.get(p).setIs_following(stories.get(i).getIs_following()); 

        } 


       } 
      } 
      notifyDataSetChanged(); 

     } 
+0

bildirmek shoud. – Payal

+0

işe yaramadı tamam, textView değerinin hiçbiri değişmiyor mu? – Ritesh

+0

tek bir yaklaşım, her textViewObject öğesindeki değeri tıklatıp sonra notifyDataSetChanged() öğesini işaretler, bu tekrar OnBindViewHolder() geri çağrısı olarak adlandırılır, burada bu textView etiketini alabilir ve buna göre ayarlayabilirsiniz. – Ritesh

İlgili konular