Kotlin으로 Android의 View Holder 모드를 잘 썼어요.
동기
Android의 ListView 등에서 사용하는 View Holder 모드를 Java로 직접 Kotlin으로 쓰면 왠지 기분이 안 좋은 코드가 될 것 같아서 잘 쓸 수 있을지 생각해 보세요.
해보다
Java 버전
여기서 소개한 View Holder 모드를 바탕으로 Kotlin 코드로 좋은 느낌을 만들어 보세요.
HogeAdapter.java@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolderItem viewHolder;
if(convertView==null){
LayoutInflater inflater = ((Activity) mContext).getLayoutInflater();
convertView = inflater.inflate(layoutResourceId, parent, false);
viewHolder = new ViewHolderItem();
viewHolder.textViewItem = (TextView) convertView.findViewById(R.id.textViewItem);
convertView.setTag(viewHolder);
}else{
viewHolder = (ViewHolderItem) convertView.getTag();
}
ObjectItem objectItem = data[position];
if(objectItem != null) {
viewHolder.textViewItem.setText(objectItem.itemName);
viewHolder.textViewItem.setTag(objectItem.itemId);
}
return convertView;
}
Kotlin 버전
Kotlin으로 자바 버전을 고치면 var
를 사용하는 재대입 코드가 될 수 있습니다.
Kotlin에서는 val
간단하게final의 변수를 표시할 수 있다.
어렵기 때문에, 나는 그것을 사용하는 쪽으로 가지고 가고 싶다.Pair
로 잘 쓸 수 있을까요?
HogeAdapter.ktoverride fun getView(position: Int, convertView: View?, parent: ViewGroup): View {
val (viewHolder, view) = if(convertView == null) {
val inflater = (context as Activity).getLayoutInflater()
val view = inflater.inflate(layoutResourceId, parent, false)
val viewHolder = ViewHolderItem()
viewHolder.textViewItem = view.findViewById(R.id.textViewItem) as TextView
view.setTag(viewHolder)
Pair(viewHolder, view)
} else {
Pair(convertView.tag, convertView)
}
val objectItem = data[position]
if (objectItem != null) {
viewHolder.textViewItem.text = objectItem.itemName
viewHolder.textViewItem.tag = objectItem.itemId
}
return view
}
// 動作確認していないので動くかわからない…
아니요var
ViewHolder 모드를 쓸 수 있습니다
또 다른 좋은 글쓰기가 있으면 알려주세요.
참고 자료
https://www.javacodegeeks.com/2013/09/android-viewholder-pattern-example.html
https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-pair/
Reference
이 문제에 관하여(Kotlin으로 Android의 View Holder 모드를 잘 썼어요.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/atsuya046/items/b6800393e17c656fbe0b
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Java 버전
여기서 소개한 View Holder 모드를 바탕으로 Kotlin 코드로 좋은 느낌을 만들어 보세요.
HogeAdapter.java
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolderItem viewHolder;
if(convertView==null){
LayoutInflater inflater = ((Activity) mContext).getLayoutInflater();
convertView = inflater.inflate(layoutResourceId, parent, false);
viewHolder = new ViewHolderItem();
viewHolder.textViewItem = (TextView) convertView.findViewById(R.id.textViewItem);
convertView.setTag(viewHolder);
}else{
viewHolder = (ViewHolderItem) convertView.getTag();
}
ObjectItem objectItem = data[position];
if(objectItem != null) {
viewHolder.textViewItem.setText(objectItem.itemName);
viewHolder.textViewItem.setTag(objectItem.itemId);
}
return convertView;
}
Kotlin 버전
Kotlin으로 자바 버전을 고치면
var
를 사용하는 재대입 코드가 될 수 있습니다.Kotlin에서는
val
간단하게final의 변수를 표시할 수 있다.어렵기 때문에, 나는 그것을 사용하는 쪽으로 가지고 가고 싶다.
Pair
로 잘 쓸 수 있을까요?HogeAdapter.kt
override fun getView(position: Int, convertView: View?, parent: ViewGroup): View {
val (viewHolder, view) = if(convertView == null) {
val inflater = (context as Activity).getLayoutInflater()
val view = inflater.inflate(layoutResourceId, parent, false)
val viewHolder = ViewHolderItem()
viewHolder.textViewItem = view.findViewById(R.id.textViewItem) as TextView
view.setTag(viewHolder)
Pair(viewHolder, view)
} else {
Pair(convertView.tag, convertView)
}
val objectItem = data[position]
if (objectItem != null) {
viewHolder.textViewItem.text = objectItem.itemName
viewHolder.textViewItem.tag = objectItem.itemId
}
return view
}
// 動作確認していないので動くかわからない…
아니요var
ViewHolder 모드를 쓸 수 있습니다또 다른 좋은 글쓰기가 있으면 알려주세요.
참고 자료
https://www.javacodegeeks.com/2013/09/android-viewholder-pattern-example.html
https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-pair/
Reference
이 문제에 관하여(Kotlin으로 Android의 View Holder 모드를 잘 썼어요.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/atsuya046/items/b6800393e17c656fbe0b
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Kotlin으로 Android의 View Holder 모드를 잘 썼어요.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/atsuya046/items/b6800393e17c656fbe0b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)