안드로이드 스튜디오 CustomListView
안드로이드 스튜디오반응형
res/layout에서 list.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"
android:padding="8dp"
android:background="#eeeeee">
<ImageView
android:id="@+id/image"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_gravity="center"
android:src="@mipmap/ic_launcher"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="17dp"
android:textStyle="bold" />
<TextView
android:id="@+id/rating"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="15dp" />
<RatingBar
android:id="@+id/star_rate"
android:layout_width="wrap_content"
android:layout_height="45dp"
android:numStars="5"
android:stepSize="0.5"
/>
<TextView
android:id="@+id/genre"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="3dp"
android:textColor="#666666"
android:textSize="13dp" />
<TextView
android:id="@+id/movie_releaseYear"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="#888888"
android:gravity="right"
android:textSize="12dp" />
</LinearLayout>
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<ListView
android:id="@+id/movie"
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:listitem="@layout/list"/>
</LinearLayout>
package com.example.customlistview;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.RatingBar;
import android.widget.TextView;
import android.widget.Toast;
import java.util.Random;
public class MainActivity extends AppCompatActivity {
ListView movie;
String[] titles = {
"The Wizard of Oz (1939)",
"Citizen Kane (1941)",
"All About Eve (1950)",
"The Third Man (1949)",
"A Hard Day's Night (1964)",
"Modern Times (1936)",
"Metropolis (1927)",
"Metropolis (1927)",
"Metropolis (1927)",
"Metropolis (1927)"};
Integer[] images = {
R.drawable.movie1,
R.drawable.movie2,
R.drawable.movie3,
R.drawable.movie4,
R.drawable.movie5,
R.drawable.movie6,
R.drawable.movie7,
R.drawable.movie7,
R.drawable.movie7,
R.drawable.movie7};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
CustomList adapter = new CustomList(MainActivity.this);
movie = (ListView) findViewById(R.id.movie);
movie.setAdapter(adapter);
movie.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(getApplicationContext(), titles[+position], Toast.LENGTH_SHORT).show();
}
});
}
public class CustomList extends ArrayAdapter<String> {
private final Activity context;
public CustomList(@NonNull Activity context) {
super(context, R.layout.list, titles);
this.context = context;
}
Random r = new Random();
@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
LayoutInflater inflater = context.getLayoutInflater();
View movieView = inflater.inflate(R.layout.list, null, true);
ImageView imageView = (ImageView) movieView.findViewById(R.id.image);
TextView title = (TextView) movieView.findViewById(R.id.title);
TextView rating = (TextView) movieView.findViewById(R.id.rating);
RatingBar star = (RatingBar) movieView.findViewById(R.id.star_rate);
TextView genre = (TextView) movieView.findViewById(R.id.genre);
TextView year = (TextView) movieView.findViewById(R.id.movie_releaseYear);
title.setText(titles[position]);
imageView.setImageResource(images[position]);
float rate = r.nextFloat()+r.nextInt(10);
rating.setText(String.format("%.2f",rate));
star.setRating(rate/2);
genre.setText("DRAMA");
year.setText(1930+position+"");
return movieView;
}
}
}
반응형
'안드로이드 스튜디오' 카테고리의 다른 글
안드로이드 스튜디오 GridView (0) | 2020.05.03 |
---|---|
안드로이드 스튜디오 CustomViewList2 (0) | 2020.05.03 |
안드로이드 스튜디오 ListView 3 (추가, 삭제, 수정) (0) | 2020.05.02 |
안드로이드 스튜디오 ListView 2 (이벤트 처리) (0) | 2020.05.02 |
안드로이드 스튜디오 List View (0) | 2020.05.02 |