Android 컨트롤 ListView 사용 방법 상세 설명

7390 단어 AndroidListView
Android 컨트롤 ListView 사용 방법 에 대한 설명 은 다음 과 같 습 니 다.
1.ListView 의 간단 한 용법
먼저 ListView Test 프로젝트 를 새로 만 들 고 Android Studio 가 자동 으로 이 벤트 를 만 들 수 있 도록 합 니 다.그리고 activity 수정main.xml 의 코드 는 다음 과 같 습 니 다.

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

 <ListView
  android:id="@+id/list_view"
  android:layout_width="match_parent"
  android:layout_height="match_parent">
 </ListView>
</LinearLayout>

다음은 MainActivity 의 코드 를 수정 합 니 다.

public class MainActivity extends AppCompatActivity {

 private String[] data={"Apple","Banana","Orange","Watermelon","Pear","Grape","Pineapple","Strawberry","Cherry","Mango","Apple","Banana","Orange","Watermelon","Pear","Grape","Pineapple","Strawberry","Cherry","Mango"};
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);

  ArrayAdapter<String> adapter=new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_list_item_1,data);
  ListView listview=(ListView)findViewById(R.id.list_view);
  listview.setAdapter(adapter);
 }
}
배열 의 데 이 터 는 ListView 에 직접 전달 할 수 없 으 며 어댑터 를 통 해 이 루어 져 야 합 니 다.
Array Adapter 의 구조 함수 에서 현재 컨 텍스트,ListView 하위 항목 레이아웃 의 id,그리고 적합 한 데 이 터 를 순서대로 전달 합 니 다.
ListView 의 setAdapter()방법 을 호출 하여 구 축 된 어댑터 대상 을 전달 합 니 다.그러면 ListView 와 데이터 간 의 연결 이 완 료 됩 니 다.
프로그램 을 실행 하면 화면 밖의 데 이 터 를 스크롤 해서 볼 수 있 습 니 다.

2.맞 춤 형 ListView 의 인터페이스
먼저 그림 을 준비 하고 위 에서 제공 하 는 모든 과일(그림 크기 가 가능 한 한 일치 하도록 주의)에 대응 하 며 drawable 디 렉 터 리 에 놓 고 이름 에 대문자 가 나타 나 지 않도록 주의 하 십시오(예 를 들 어 Apple 이 합 법 적 이지 않 습 니 다).
com.example.administrator.listviewtest 에서 새.java 파일 을 만 들 고 실체 클래스 Fruit 를 ListView 어댑터 의 어댑터 형식 으로 정의 합 니 다.

public class Fruit{
 private String name;
 private int imageId;
 public Fruit(String name,int imageId){
  this.name=name;
  this.imageId=imageId;
 }
 public String getName(){
  return name;
 }
 public int getImageId(){
  return imageId;
 }
}

그리고 ListView 의 하위 항목 에 사용자 정의 레이아웃 을 지정 하고 layot 디 렉 터 리 에 새 fruititem.xml。

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

 <ImageView
  android:id="@+id/fruit_image"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content" />

 <TextView
  android:id="@+id/fruit_name"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_gravity="center_vertical"
  android:layout_marginLeft="10dp"
  />
</LinearLayout>
다음은 사용자 정의 어댑터 를 만 듭 니 다.com.example.administrator.listviewtest 에서 새.java 파일 을 만 들 고 부모 클래스 의 구조 함 수 를 다시 썼 습 니 다.컨 텍스트,ListView 하위 항목 레이아웃 의 id 와 데 이 터 를 모두 전달 하 는 데 사 용 됩 니 다.FruitAdapter 라 고 명명 되 었 습 니 다.코드 는 다음 과 같 습 니 다.

public class FruitAdapter extends ArrayAdapter<Fruit> {
 private int resourceId;
 public FruitAdapter(Context context, int textViewResourceId, List<Fruit> objects){
  super(context,textViewResourceId,objects);
  resourceId=textViewResourceId;
 }
 @Override
 public View getView(int position,View convertView,ViewGroup parent){
  Fruit fruit=getItem(position);   //        
  View view= LayoutInflater.from(getContext()).inflate(resourceId,parent,false);
  ImageView fruitImage=(ImageView)view.findViewById(R.id.fruit_image);
  TextView fruitName=(TextView) view.findViewById(R.id.fruit_name);
  fruitImage.setImageResource(fruit.getImageId());
  fruitName.setText(fruit.getName());
  return view;
 }
}

다음은 MainActivity 의 코드 를 수정 합 니 다.

package com.example.administrator.listviewtest;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {
 private List<Fruit> fruitList=new ArrayList<>();

// private String[] data={"Apple","Banana","Orange","Watermelon","Pear","Grape","Pineapple","Strawberry","Cherry","Mango","Apple","Banana","Orange","Watermelon","Pear","Grape","Pineapple","Strawberry","Cherry","Mango"};
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  initFruits();     //       
  FruitAdapter adapter=new FruitAdapter(MainActivity.this,R.layout.fruit_item,fruitList);

//  ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1, data);
  ListView listview = (ListView) findViewById(R.id.list_view);
  listview.setAdapter(adapter);
 }

 private void initFruits(){
  for(int i=0;i<2;i++){
   Fruit apple=new Fruit("Apple",R.drawable.apple);
   fruitList.add(apple);
   Fruit orange=new Fruit("Orange",R.drawable.orange);
   fruitList.add(orange);
   Fruit banana=new Fruit("Banana",R.drawable.banana);
   fruitList.add(banana);
   Fruit waterlenmo=new Fruit("Waterlemon",R.drawable.waterlemon);
   fruitList.add(waterlenmo);
   Fruit pear=new Fruit("Pear",R.drawable.pear);
   fruitList.add(pear);
   Fruit grape=new Fruit("Grape",R.drawable.grape);
   fruitList.add(grape);
   Fruit pineapple=new Fruit("Pineapple",R.drawable.pineapple);
   fruitList.add(pineapple);
   Fruit strawberry=new Fruit("Strawberry",R.drawable.straw);
   fruitList.add(strawberry);
   Fruit cherry=new Fruit("Cherry",R.drawable.cherry);
   fruitList.add(cherry);
   Fruit mango=new Fruit("mango",R.drawable.mango);
   fruitList.add(mango);
  }
 }
}

프로그램 을 실행 한 후 효과 도 는 다음 과 같다.

이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기