728x90
반응형
점점 익숙해져간다.
프래그먼트에 대해 겁이 없어진다.
공부하면서 이정도 얻은 것만도 큰 감동이다.
어떻게 만들것인지 레이아웃이 머릿속에 그려지면
프래그먼트 구성은 이제 쉽게 할 수 있다.
이번에는 item.java를 만들어서 get/set을 만들어 볼 예정이다.
- 프래그먼트를 만든다.
- main.xml에 만든 프래그먼트를 구성한다.
- fragment.xml에 추가 구성을 한다.
- item.java에 get/set을 만든다.
- BaseAdapter를 상속받는 adapter.java를 만든다.
- getView가 가장 중요하다
- context를 선언하고 inflate해서 convertView 참조 획득
- convertView로 위젯 참조 획득
- dataSet인 listViewItemList로부터 data 추출
- 데이터 반영
- addItem : 아이템 데이터 추가를 위한 함수. 개발자가 원하는대로 작성 가능.
- 만든 adapter를 Fragment에 세팅한다.
- onListItemClick 만들기
- mainActivity에 Fragment 추가
- 이미지 파일이 없어서 결국 이미지 객체 제외 작업 (ㅋㅋ)
<adapter.java>
package com.jongkook.android.fragment_practice_3;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import java.util.ArrayList;
public class CustomAdapter extends BaseAdapter {
// Adapter에 추가된 데이터를 저장하기 위한 ArrayList
private ArrayList<ListViewItem> listViewItems = new ArrayList<>();
Context context;
// ListViewAdapter의 생성자
public CustomAdapter(){
}
// Adapter에 사용되는 데이터의 개수를 리턴. : 필수 구현
@Override
public int getCount() {
return listViewItems.size();
}
// 지정한 위치(position)에 있는 데이터 리턴 : 필수 구현
@Override
public Object getItem(int position) {
return listViewItems.get(position);
}
// 지정한 위치(position)에 있는 데이터와 관계된 아이템(row)의 ID를 리턴. : 필수 구현
@Override
public long getItemId(int position) {
return position;
}
// position에 위치한 데이터를 화면에 출력하는데 사용될 View를 리턴. : 필수 구현
@Override
public View getView(int position, View convertView, ViewGroup parent) {
context = parent.getContext();
// "listview_item" Layout을 inflate하여 convertView 참조 획득.
if(convertView == null){
LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.fragment_custom_list, parent, false);
}
// 화면에 표시될 View(Layout이 inflate된)으로부터 위젯에 대한 참조 획득
TextView textView1 = (TextView)convertView.findViewById(R.id.textView);
TextView textView2 = (TextView)convertView.findViewById(R.id.textView2);
Log.i("TV",">>>>>> " + textView1.toString() + " <<<<");
// Data Set(listViewItemList)에서 position에 위치한 데이터 참조 획득
ListViewItem listViewItem = listViewItems.get(position);
// 아이템 내 각 위젯에 데이터 반영
textView1.setText(listViewItem.getTitle());
textView2.setText(listViewItem.getContents());
return convertView;
}
// 아이템 데이터 추가를 위한 함수. 개발자가 원하는대로 작성 가능.
public void addItem(String title, String contents){
ListViewItem item = new ListViewItem();
item.setTitle(title);
item.setContents(contents);
listViewItems.add(item);
}
}
728x90
반응형
'Android, iOS' 카테고리의 다른 글
Key 인증과 Google Map API가 싸울 때 (0) | 2016.11.10 |
---|---|
[안드로이드] Class convert / Okhttp / Picasso 등 (0) | 2016.10.26 |
드디어 Fragment를 listView에 담아보자 (0) | 2016.10.10 |
Fragment가 감 잡히려니깐 등장한 inflate (0) | 2016.10.10 |
[안드로이드] Fragment. 내가 여기서 무릎을 꿇어야 하나. (0) | 2016.10.07 |
Comment