RecyclerView
에서 행의 특정 뷰를 변경하는 방법. Adapter.notifyDataSetChanged
또는 Adapter.notifyItemChanged
업데이트 행 하지만이 행의 다른보기를 건드리지 않고 행의 특정보기를 변경해야합니다.리사이클 러 뷰에서 행의 특정 항목 변경
답변
먼저 다음을 사용 Glide (구글에 의해)를 사용할 수 있습니다. 더 효율적입니다.
둘째, 캐시 메모리에 이미있는 이미지는 다시 다운로드되지 않습니다.
이제 목록에서 데이터를 변경 한 다음 어댑터 또는 리사이클 러보기를 업데이트하면됩니다. 당신의 AdapterClass
인터페이스를 만들기 내부
,의는
public interface TheUpdater{
public void updateMyAdapter(int position);
}
이 그런 다음 활동에서이 인터페이스를 구현하고,이 메소드를 오버라이드 (override) 가정 해 봅시다.
이제보기의 위치를 가져 오려면 다음을 수행하십시오.
보기 (단추 또는 전체 부모보기, 즉 레이아웃)의 onClick()
을 무시하고 다음 문을 수행 할 수 있습니다.
mTappedPosition = getAdapterPosition();
listener.updateMyAdapter(mTappedPosition); //Update the adapter
여기에서 mTappedPosition
은 글로벌 변수입니다. 당신의 활동
@Override
updateMyAdapter(int position){
---- //Do stuff
mAdapter.notifyItemSetChanged(position);
}
알아,하지만 문제는 ImageView가 Picasso를 통해 소스를 다운로드하고 notifyDatasetChanged Picasso를 설정할 때마다 다운로드한다는 것이다. 그림 및이 업데이트가 사용자에게 표시되는 것을 막으려 고합니다. –
어댑터 내부에서 뷰의 위치를 얻을 수 있습니까? 그렇다면, 나는 그것을위한 해결책을 가지고있다. – Dennis
예, 변경 사항을 적용 할 때 위치를 얻을 수 있습니다. –
대신 피카소의 코드 모든
MyRecyclerAdapter.ViewHolder viewHolder= (MyRecyclerAdapter.ViewHolder) recycleView.findViewHolderForAdapterPosition(1);
viewHolder.txtView.SetText("Some Text");
내부
나는 당신이 이미지 캐싱 기술을 사용해야하는 이미지 로딩 문제를 방지 생각합니다. 따라서 이미로드 된 이미지는 다시로드되지 않습니다.
또는 이미지가 이미로드되어있는 경우
및 각각의 모든 행은 당신이 당신의 itemModel (어댑터 항목의 데이터가있는 DTO)에 부울 플래그를 유지할 수 있습니다 설정 같은 이미지를 보여주고있다. 해당 모델을 변경 한 다음 전화하십시오yourListToAdapter(index).setFlag(showImage1); // showImage1 boolean flag
yourAdapter.notifyItemChanged(index);
- 1. 리사이클 러 뷰에서 리사이클 뷰
- 2. 리사이클 러 뷰에서 특정 위치의 뷰를 업데이트하는 방법은 무엇입니까?
- 3. 클릭 후 리사이클 러 뷰에서 특정 이미지를 변경하는 방법
- 4. json 이미지를 리사이클 러 뷰에서 다른 액티비티로 전달하는 방법
- 5. 리사이클 러 뷰에서 아이템 뷰를 동적으로 변경하는 방법은 무엇입니까?
- 6. 리사이클 러 뷰에서 요소를 제거해도 인덱스 순서가 변경되지 않습니다
- 7. 각 행의 버튼이 포함 된 리사이클 러 뷰에서 버튼의 색상을 변경했습니다.
- 8. 하나의 리사이클 뷰에서 다른 스타일
- 9. 다른 recyclerview에서 아이템을 클릭하면 리사이클 러 뷰를 표시하는 방법
- 10. Firebase가 리사이클 러 뷰에로드하기 전에 데이터를 준비합니다.
- 11. SQLite 데이터베이스로 더 많은 리사이클 러 뷰로드
- 12. 리사이클 러 뷰를 찍은 항목을 찾는 방법은 무엇입니까?
- 13. 카드보기 리사이클 러 내부보기 이전 및 다음 객체로보기
- 14. 단일 액티비티 (클래스) 및 단일 레이아웃 (XML)을 사용하여 리사이클 러 뷰에서 항목 선택에 따라 다른 데이터를 표시하는 방법
- 15. 리사이클 러 뷰에서 데이터 항목이 증가 할 때 텍스트 뷰 아래에 리사이클러 뷰 데이터가 있습니다.
- 16. 컨텍스트 방식의 리사이클 러 뷰에서 메소드 remove (position)를 가져올 수 없습니다.
- 17. Android : 리사이클 러 뷰 이미지 요청 취소 방법
- 18. 어댑터가있는 리사이클 러 뷰에있는 항목을 기준으로 대화 상자 표시
- 19. 배열은 행당 하나의 항목 대신 모든 행의 모든 항목을 반환합니다.
- 20. 팬더의 특정 행의 값 변경
- 21. 리사이클 러 아이템 클릭 리스너 인터페이스에서 Null 포인터 예외가 발생합니다.
- 22. 처음 20 개 연락처를 리사이클 러 뷰에로드하고 OnScrollListener를 사용하여 리사이클 뷰에 더 많이로드하는 방법
- 23. 동일한 조각에서 다른 리사이클 러 뷰 어댑터의 리사이클 뷰 어댑터의 onclick을 설정하는 방법은 무엇입니까?
- 24. Android Studio에서 리사이클 러 뷰 어댑터를 테스트하는 방법
- 25. 리사이클 러 뷰가 아래에있을 때 콘텐츠가 표시되지 않습니다. AppBarLayout
- 26. 하나의 선형 레이아웃에서 여러 리사이클 러 뷰를 수직으로 스크롤하는 방법
- 27. AutoCompleteTextView에서 리사이클 러 뷰의 데이터 목록을 표시하는 방법
- 28. 버튼을 클릭했을 때 리사이클 러 뷰와 프래그먼트 사이를 전환
- 29. 리사이클 러 뷰가있을 때 버튼에서 데이터 바인딩이 올바르게 작동하지 않습니다.
- 30. Firebase 저장소에있는 폴더에있는 이미지를 참조하여 리사이클 러 뷰에 표시하는 방법
보기로 어떤 수단이 있습니까? 죄송합니다. 질문을받습니다. 행 라벨, 버튼 색상 또는 전체 행 스타일을 변경 하시겠습니까? 또는 전체보기를 다른 레이아웃 xml로 변경 하시겠습니까? –
안녕 비슈누 KR! 두 개의 imageView와 두 개의 textView가 있습니다. 사용자가 행을 클릭 할 때마다 모든 행의이 textVIews 중 하나에서 텍스트가 변경되기를 원합니다. 그러나 문제는 다른 imageView가 Picasso 라이브러리를 통해 소스를 얻는다는 것입니다. 그리고 notifyDataSetChanged 등을 통해 텍스트를 변경할 때마다 Picasa는 imageView를 업데이트하고 사용자에게 표시됩니다. 이 문제가 발생하지 않도록하고 싶습니다. 문제는 다음과 같습니다. 전체 행을 만지지 않고 행의 특정보기를 어떻게 바꿀 수 있습니까? –
Haah .. 그 이미지를 바로 다시로드한다는 것을 말하고있는 것입니다. 그래서 당신은 이미지 캐싱 기법을 사용할 필요가 있다고 생각합니다. 피카소는 이미지가 이미로드되어있는 경우 이미지를 다시로드하지 않습니다. 또는 다음 옵션은 항목 모델 내의 태그를 사용하여 이미지를 보이거나 숨김으로써 차단하는 것입니다. –