티스토리 뷰
커스텀 어댑터
list_item.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView android:id="@+id/lt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:textSize="20sp"/>
<TextView android:id="@+id/lt2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:textSize="20sp"/>
</LinearLayout>
MyAdapter.java
- BaseAdapter: 커스텀 어댑터를 만들 때 상속받아 사용하는 추상 클래스
- LayoutInflater.from(context): context를 통해 LayoutInflater 객체 반환
- getView(){}: 커스텀 어댑터를 사용할 때 각 리스트 아이템의 뷰(View)를 생성하고 반환하는 역할
- if(view==null) convertView=inflater.inflate(): view가 null인 경우, 레이아웃 xml 파일을 뷰 객체로 변환
package com.example.test;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.BaseAdapter;
public class MyAdapter extends BaseAdapter {
String[] data1, data2;
LayoutInflater f;
public MyAdapter(Context context, String[] data1, String[] data2) {
f = LayoutInflater.from(context);
this.data1 = data1;
this.data2 = data2;
}
@Override
public int getCount() {
return data1.length;
}
@Override
public Object getItem(int i) {
return data1[i]+", "+data2[i];
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
if(view == null) view = f.inflate(R.layout.list_item, viewGroup, false);
TextView t1 = view.findViewById(R.id.lt);
t1.setText(data1[i]);
TextView t2 = view.findViewById(R.id.lt2);
t2.setText(data2[i]);
return view;
}
}
MainActivity.java
- Myadapter a = new Myadapter(): Myadapter 클래스 객체 선언
package com.example.test;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
String data1[] = {"한국", "스페인", "중국", "일본", "캐나다", "독일", "프랑스"};
String data2[] = {"Korea", "Spain", "China", "Japan", "Canada", "Germany", "France"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ListView l = new ListView(this);
MyAdapter a = new MyAdapter(this, data1, data2);
l.setAdapter(a);
l.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int i, long id) {
String v = (String) parent.getItemAtPosition(i);
Toast.makeText(getApplicationContext(), v+" 클릭", Toast.LENGTH_SHORT).show();
}
});
setContentView(l);
}
}


'학업 > 모바일프로그래밍' 카테고리의 다른 글
[Android Studio] 리스트뷰 삭제 (0) | 2024.12.17 |
---|---|
[Android Studio] 웹페이지 이동 앱 (0) | 2024.12.17 |
[Android Studio] 리스트뷰(ListView) (1) | 2024.12.17 |
[Android Studio] 액티비티 생명주기 (0) | 2024.12.17 |
[Android Studio] 지도 검색 앱 (0) | 2024.12.17 |
공지사항
링크