Android ListView 와 Adapter 데이터 어댑터 에 대한 간단 한 소개
같은 형식의 데 이 터 를 대량으로 표시 합 니 다.
상용 속성:
상용 방법:
setAdapter()설정 데이터 어댑터
이 감청 의 예 는 머리 보기 항목 의 아래 표 시 를 설정 하여 position-list view.getHeaderViewsCount()로 항목 의 아래 표 시 된 위 치 를 계산 하여 정확 한 대상 을 가 져 오 는 것 입 니 다.
Adapter 데이터 어댑터 는 각종 데 이 터 를 적당 한 형식 으로 컨트롤 에 연결 합 니 다.예 를 들 어 listview,gridview,spinner 등 컨트롤 은 Adapter 바 인 딩 데 이 터 를 사용 합 니 다.
어댑터 3 종 소개
1.ArrayAdapter
매개 변수 1:현재 상하 문 환경
인자 2:android.R.layout.simplelist_item_1
안 드 로 이 드 자체 가 가지 고 있 는 간단 한 레이아웃 입 니 다.id 가 text 1 인 TextView 만 포함 되 어 있 습 니 다.즉,매개 변수 3 Array Adapter 는 한 줄 의 데이터 만 표시 하고 텍스트 정 보 를 표시 합 니 다.이 시스템 에서 제공 하 는 레이아웃 을 사용 하면 됩 니 다.
안 드 로 이 드 시스템 은 우리 에 게 다른 좋 은 템 플 릿 도 제공 했다.
표시 효과 가 listview 에 귀속 되 었 습 니 다
2.SimpleAdapter
simpleAdapter 의 확장 성 이 가장 좋 습 니 다.다양한 레이아웃 을 정의 할 수 있 습 니 다.ImageView(그림)를 올 릴 수도 있 고 Button(단추),CheckBox(체크 상자)등 을 올 릴 수도 있 습 니 다.
결과 보이 기
여기 서 인용 한 레이아웃 은 시스템 기본 simple 입 니 다.list_item_2
listView 항목 의 효 과 는 레이아웃 에 따라 표 시 됩 니 다.아무리 멋 있 게 써 도 됩 니 다.
3.BaseAdapter
BaseAdapter 는 개발 에 가장 많이 사용 되 는 어댑터 Array Adapter 로 Simple Adapter 는 모두 BaseAdapter 에 계승 되 어 있 습 니 다.BaseAdapter 는 자신 이 정의 한 Adapter 를 완성 할 수 있 습 니 다.복잡 한 조합의 데이터 와 자원 을 원 하 는 디 스 플레이 효과 로 보 여 드릴 수 있 습 니 다.
BaseAdapter 를 계승 한 후 다음 과 같은 네 가지 방법 을 다시 써 야 합 니 다:getCount,getItem,getItemId,getView.
시스템 은 ListView 를 그리 기 전에 getCount 방법 을 사용 하여 Item 의 개 수 를 가 져 옵 니 다.아 이 템 을 그 릴 때마다 getView 방법 을 호출 합 니 다.getView 에서 미리 정 의 된 layot 레이아웃 을 참조 하여 표시 효 과 를 확인 하고 View 대상 을 하나의 아 이 템 으로 되 돌려 줍 니 다.
이 두 가지 방법 은 자체 적 으로 ListView 디 스 플레이 효과 에서 가장 중요 한 것 입 니 다.또한 이 두 가지 방법 을 다시 쓰 면 ListView 는 개발 자의 요구 에 따라 완전히 표시 할 수 있 습 니 다.getItem 과 getItemId 방법 은 ListView 의 응답 방법 을 호출 할 때 호출 됩 니 다.
레이아웃 파일 사용자 정의(listview 항목 표시 효과)
<?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">
<ImageView
android:id="@+id/image_photo"
android:layout_width="70dp"
android:layout_height="70dp"
android:padding="10dp"/>
<TextView
android:id="@+id/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20dp"
android:layout_toRightOf="@id/image_photo"/>
<TextView
android:id="@+id/age"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20dp"
android:layout_toRightOf="@id/image_photo"
android:layout_below="@id/name"
android:layout_marginTop="10dp"/>
</RelativeLayout>
학생
public class Student {
private String name;
private int age;
private int photo;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public int getPhoto() {
return photo;
}
public void setPhoto(int photo) {
this.photo = photo;
}
}
MainActivity
public class MainActivity extends AppCompatActivity {
private ListView listView;
// BaseAdapter
private MyAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView= (ListView) findViewById(R.id.listview);
List<Student> stuList=new ArrayList<>();
for(int i=0;i<10;i++){
Student stu=new Student();
stu.setAge(10+i);
stu.setName("name"+i);
stu.setPhoto(R.mipmap.ic_launcher);
stuList.add(stu);
}
adapter=new MyAdapter(stuList,MainActivity.this);
listView.setAdapter(adapter);
}
MyAdapter
public class MyAdapter extends BaseAdapter {
private List<Student> stuList;
private LayoutInflater inflater;
public MyAdapter() {}
public MyAdapter(List<Student> stuList,Context context) {
this.stuList = stuList;
this.inflater=LayoutInflater.from(context);
}
@Override
public int getCount() {
return stuList==null?0:stuList.size();
}
@Override
public Student getItem(int position) {
return stuList.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
//
View view=inflater.inflate(R.layout.layout_student_item,null);
Student student=getItem(position);
// view id image_photo
ImageView image_photo= (ImageView) view.findViewById(R.id.image_photo);
TextView tv_name= (TextView) view.findViewById(R.id.name);
TextView tv_age= (TextView) view.findViewById(R.id.age);
image_photo.setImageResource(student.getPhoto());
tv_name.setText(student.getName());
tv_age.setText(String.valueOf(student.getAge()));
return view;
}
결과 보이 기이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Java Adapter 어댑터 모드(클래스 어댑터, 객체 어댑터)의 장단점 비교어댑터 모드는 하나의 클래스의 인터페이스를 클라이언트가 기대하는 다른 인터페이스로 바꾸어 원래의 인터페이스가 일치하지 않아 함께 작업할 수 없는 두 클래스가 함께 작업할 수 있도록 하는 것이다.기능적으로 말하자면, ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.