티스토리 뷰

Android ListView Custom Adapter 사용

안녕하세요. 2월마지막날인 화요일이면서 내일은 공휴일인 3.1절이네요


오늘은 ListView를 사용하면서, ListView에 들어갈 View를 만들어 이용가능한 Custom Adapter를 소개해드릴게요.


1. ListView를 생성해줍시다.


activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ListView
android:id="@+id/lv_main"
android:layout_width="match_parent"
android:layout_height="match_parent">
</ListView>
</RelativeLayout>


간단하게 ListView만 생성하였습니다.



2. ListView에 들어갈 View를 만들어줍니다.


activity_main_listview.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">

<TextView
android:textSize="25sp"
android:textColor="#e5e5e6"
android:text="이름"
android:id="@+id/text_listview_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:textSize="25sp"
android:textColor="#e5e5e6"
android:text="나이"
android:id="@+id/text_listview_age"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />

</LinearLayout>


3. Adapter에서 데이터받을 Class를 생성해줍시다.


Member.class


public class Member{
private String name;
private String age;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getAge() {
return age;
}

public void setAge(String age) {
this.age = age;
}

}





4. CustomAdapter를 만들어줍니다.


CustomAdapter.java



public class CustomAdapter extends BaseAdapter {
private ArrayList<Member> arrayList = new ArrayList<>();

@Override
public int getCount() {
return arrayList.size();
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
Holder holder;
final Context mContext = parent.getContext();

if (convertView == null) {
LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE)
;
convertView = inflater.inflate(R.layout.activity_main_listview, parent, false);
holder = new Holder(convertView);

convertView.setTag(holder);
} else {
holder = (Holder) convertView.getTag();
}
// 해당 position 에 대한 Member 값 가져오기.
Member member= arrayList.get(position);
holder.text_listview_name.setText(member.getName());
holder.text_listview_age.setText(member.getAge());
return convertView;
}


@Override
public long getItemId(int position) {
return position;
}

// 지정한 위치(position)에 있는 데이터 리턴
@Override
public Object getItem(int position) {
return arrayList.get(position);
}

// 아이템 데이터 추가 함수.
public void addItem(Member member) {

arrayList.add(member);
}

static class Holder {
@Bind(R.id.
text_listview_name) TextView text_listview_name;
@Bind(R.id.text_listview_age) TextView text_listview_age;
public Holder(View view){
ButterKnife.bind(
this,view);
}
}
}

5. MainActivity를 수정합시다.


MainActivity.java



public class MainActivity extends AppCompatActivity {
    @Bind(R.id.
lv_main) ListView lv_main;

    
CustomAdapter customAdapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);

        customAdapter = new CustomAdapter();

lv_main.setAdapter(customAdapter);


for(int i=0; i<10 ;i++){

Member member = new Member();

member.setName("Juno" + String.valueOf(i));

member.setAge(String.valueOf(i+1));


customAdapter.addItem(member);

}


customAdapter.notifyDataSetChanged();

}
}



위의 코드를 참고하셔서 작업 하시면 됩니다!!!!!!


제가쓰던 부분 을 가져와 수정 하여서 오타가 있을수있으니 ctrl +c + v 하지마시구 한번씩 따라해보세요  


내일은 공휴일이니 오늘 하루도 힘내세요 :) 


읽어주셔서 감사합니다 

Recent Comments