본문 바로가기

개발/모바일

안드로이드 스튜디오 Lec5 리스트 뷰 꾸미기 (Custom ListView)

반응형

강의링크 : https://youtu.be/4E-WUdhJq3M


1.

activity_main.xml 에 Container>listview를 추가하고 id를 설정한 후

app/java/com.example~/MainActivity에 다음과 같이 코드 작성

MainActivity

 package com.example.han.tutorial5;


import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

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

String[] items = {"a", "b", "c", "d", "e", "f", "g"};
// adapter : 실제로 리스트에 들어 갈 내용을 담는 부분
ListAdapter adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, items);
ListView listView = (ListView)findViewById(R.id.listView);
listView.setAdapter(adapter);

listView.setOnItemClickListener(
new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int i, long l) {
// parent의 특정한 아이템
String item = String.valueOf(parent.getItemAtPosition(i));
Toast.makeText(MainActivity.this, item, Toast.LENGTH_SHORT).show();
}
}
);
}
}



실행하면 기본적인 텍스트로 구성된 리스트뷰가 생성됨.



2. 이미지 추가

app/res/layout 폴더에 image_layout.xml 파일 생성 후에 imageView 하나 textView 하나 생성

app/java/com.example~ 폴더에 ImageAdapter 파일을 생성 후에 생성자와 getView함수를 새로 정의함

ImageAdapter 

 package com.example.han.tutorial5;


import android.content.Context;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;

/**
* Created by HAN on 2018. 1. 8..
*/

public class ImageAdapter extends ArrayAdapter<String>{
ImageAdapter(Context context, String[] items){
super(context, R.layout.image_layout, items);
}

@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
LayoutInflater imageInflator = LayoutInflater.from(getContext());
// 레이아웃 중 image layout을 가져와서 view 를 만
View view = imageInflator.inflate(R.layout.image_layout, parent, false);
String item = getItem(position);
// textView, imageView 모두 디자인에서 가져와서 객체로 만들어
TextView textView = (TextView) view.findViewById(R.id.textView);
ImageView imageView = (ImageView) view.findViewById(R.id.imageView);
textView.setText(item);
imageView.setImageResource(R.mipmap.balloon);
return view;
}
}


반응형