1. ListFragment란?
- ListView를 보다 쉽게 사용하기 위해 제공되는 Fragment.
- Fragment 내에 ListView를 사용할 경우 보다 편리하게 구성할 수 있도록 제공되는 Fragment이다.
- ListView의 id가 @android:id/list로 설정되어 있을 경우 자동으로 ListView를 찾아 관리하게 된다.
- 일반적으로 리스트뷰를 만드려면 1. 어댑터 생성 2. 어댑터를 리스트뷰에 세팅 3. 필요하다면 리스너 생성이 있어얗는데 이 모든걸 id만 맞추면 자동으로해준다.
2. 예제
1. ListView의 id 설정
<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@android:id/list"/>
2. ListFragment()를 상속하는 클래스 생성.
3. 리스트뷰를 구성하기 위한 어댑터 세팅.
4. 리스너 세팅.
class FirstFragment : ListFragment() {
// 1. 리스트뷰를 구성하기위해 필요한 객체들.
var textView: TextView? = null
var list = arrayOf("항목1", "항목2", "항목3")
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?): View? {
var view = inflater.inflate(R.layout.fragment_first, container, false)
textView = view.findViewById<TextView>(R.id.textView3)
// 2. 어댑터 생성
var adapter = activity?.let { ArrayAdapter<String>(it, android.R.layout.simple_list_item_1, list) }
listAdapter = adapter
return view
}
// 3. 리스너 생성
override fun onListItemClick(l: ListView?, v: View?, position: Int, id: Long) {
super.onListItemClick(l, v, position, id)
var str = list[position]
textView?.text = str
}
}
5. MainActivity에선 Fragment세팅.
class MainActivity : AppCompatActivity() {
var list_fragment = FirstFragment()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
var tran = supportFragmentManager.beginTransaction()
tran.replace(R.id.container, list_fragment)
tran.commit()
}
}
'Deperecated > Android_강의' 카테고리의 다른 글
안드로이드 - 데이터 관리 - 파일 입출력 (0) | 2020.02.19 |
---|---|
안드로이드 - DialogFragment (0) | 2020.02.19 |
안드로이드 - Activity Controller (0) | 2020.02.19 |
안드로이드 - Fragment (0) | 2020.02.19 |
안드로이드 - Fragment - IPC (0) | 2020.02.19 |