CursorAdapter
으로 채워진 ListView
으로 Android 데이터 바인딩 라이브러리를 사용하고 싶습니다. 그러나 어떻게 작동하는지 알 수는 없습니다. 나는 달성하는 것이 아주 간단하게 보인다.안드로이드는 CursorAdapter와 함께 데이터 바인딩 라이브러리를 사용합니다
public class PlayCursorAdapter extends CursorAdapter {
private List<Play> mPlays;
PlayCursorAdapter(Context context, Cursor cursor) {
super(context, cursor, 0);
mPlays = new ArrayList<>();
}
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
ListItemPlayBinding binding = ListItemPlayBinding.inflate(LayoutInflater.from(context), parent, false);
Play play = new Play();
binding.setPlay(play);
mPlays.add(play);
return binding.getRoot();
}
@Override
public void bindView(View view, Context context, Cursor cursor) {
int timeIndex = cursor.getColumnIndexOrThrow(PlayEntry.COLUMN_TIME);
...
long time = cursor.getLong(timeIndex);
...
Play play = mPlays.get(cursor.getPosition());
play.setTime(time);
...
}
}
현재 행동 :이 코드를 실행하고 나는 목록에서 아래로 스크롤하면
내가 mPlays에 IndexOutOfBoundsException
목록을 얻을 수를
이 내가 지금 가지고있는 것입니다.
원하는 동작 :
나는 데이터 바인딩 라이브러리를 사용하여 ContentProvider
과 CursorAdapter
데이터와 ListView
을 채우려. CursorAdapter
과 함께 데이터 바인딩 라이브러리를 사용할 수 있습니까? 또는 항상 RecyclerView
과 RecyclerView.Adapter
을 사용 하시겠습니까?
감사합니다.이 솔루션이 효과적이었습니다. 'DataBindingUtil.getBinding (view)'부분을 찾고있었습니다. 'CursorAdapter' 대신에'RecyvlerView.Adapter'를 사용 하시길 권 하시겠습니까? 아니면이 상황에서 과도하게 사용합니까? 'RecyclerView '사용에 관한 매체의 게시물을 읽었습니다. –
RecyclerView는 ListView의 대부분의 사용 사례를 처리하고 몇 가지 추가 기능을 갖춘 최신 위젯입니다. Android 라이브러리는 완전히 지원 라이브러리에 포함되어 있기 때문에 안정성이 향상됩니다. 그래서, 미래의 레이아웃을 위해 RecyclerView를 살펴볼 가치가 있다고 말하고 싶습니다. 즉, 무언가 잘 작동 할 때 변경할 이유가 없습니다. –