2017-05-05 1 views
2

세 방법Recyclerview 데이터 세트 업데이트 적절한 방법

  1. notifydatasetchanged()
  2. swapadapter()
  3. List<>를 업데이트와 같은 어댑터 할당 제가 시도 recyclerview의 데이터를 갱신한다.

하지만 (앱) 각 방법 메모리 할당에 데이터를 갱신 할 때를 해결하는 방법 (0.50-0.25) MB의 범위로 증가유지?

내 어댑터

public class RVAdapter extends RecyclerView.Adapter<RVAdapter.PersonViewHolder> { 
public static int Sub; 

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


    TextView personName; 
    ImageView personPhoto; 

    PersonViewHolder(View itemView) { 
     super(itemView); 
     itemView.setOnClickListener(this); 
     personName = (TextView)itemView.findViewById(R.id.person_name); 
     personPhoto = (ImageView)itemView.findViewById(R.id.person_photo); 
    } 

    @Override 
    public void onClick(View view) { 
     Sub = getLayoutPosition(); 
     Toast.makeText(view.getContext(), "position = " + getLayoutPosition(), Toast.LENGTH_SHORT).show(); 

    }} 

List<Person> persons; 
RVAdapter(List<Person> persons){ 
    this.persons = persons; 
} 

@Override 
public void onAttachedToRecyclerView(RecyclerView recyclerView) { 
    super.onAttachedToRecyclerView(recyclerView); 
} 

@Override 
public PersonViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { 
    View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.raw, viewGroup, false); 
    PersonViewHolder pvh = new PersonViewHolder(v); 
    return pvh; 
} 

@Override 
public void onBindViewHolder(PersonViewHolder personViewHolder, int i) { 
    personViewHolder.personName.setText(persons.get(i).name); 
    personViewHolder.personPhoto.setImageResource(persons.get(i).photoId); 
} 

@Override 
public int getItemCount() { 
    return persons.size(); 
} 
public void swap(List<Person>persons){ 
    persons.clear(); 
    persons.add(new Person("htfg", R.mipmap.ic_launcher));//0 
    persons.add(new Person("fhe", R.mipmap.ic_launcher));//0 
notifyDataSetChanged(); 

} }

+0

RecyclerView 어댑터를 게시하십시오. – mariozawa

+0

나는 그것을 추가했다. – Arjun

답변

0

사용 adapter.notifyItemChanged (itemPosition) 또는 기타 .notifyItem() 원시 어댑터 방법.