프로그래밍/부스트코스
부스트 코스 에이스 미션 6 (RecyclerView, 개선사항)
돌및쓰고
2019. 9. 6. 00:57
1차 PASS
1. RecyclerView
써도써도 금방까먹는다
public class MovieGallaryAdapter extends RecyclerView.Adapter<MovieGallaryAdapter.Holder> {
ArrayList<String> list;
Activity context;
String thumb;
public MovieGallaryAdapter(ArrayList<String> list, Activity context, String thumb) {
this.list = list;
this.context = context;
this.thumb = thumb;
}
@NonNull
@Override
public Holder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
LayoutInflater inflater = LayoutInflater.from(context);
View view = inflater.inflate(R.layout.item_movie_gallary, viewGroup, false);
return new Holder(view);
}
@Override
public void onBindViewHolder(@NonNull Holder holder, final int i) {
final String url = list.get(i);
if (url.contains("youtu.be") || url.contains("youtube")) {
Glide.with(context).load(thumb).centerCrop().into(holder.photo);
holder.video.setVisibility(View.VISIBLE);
holder.photo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setData(Uri.parse(url));
context.startActivity(intent);
}
});
} else {
Glide.with(context).load(list.get(i)).into(holder.photo);
holder.video.setVisibility(View.INVISIBLE);
holder.photo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(context, PhotoDetailActivity.class);
intent.putExtra("url", url);
context.startActivity(intent);
}
});
}
}
@Override
public int getItemCount() {
return list.size();
}
class Holder extends RecyclerView.ViewHolder {
public ImageView photo;
public ImageView video;
public String url;
public Holder(@NonNull View itemView) {
super(itemView);
photo = itemView.findViewById(R.id.iv_movie_gallary_photo);
video = itemView.findViewById(R.id.iv_movie_gallary_video);
}
}
}
2. PhotoView
줌기능을 간단하게 사용가능한 라이브러리
직접만들어보니 샘플링이 복잡
https://github.com/chrisbanes/PhotoView
chrisbanes/PhotoView
Implementation of ImageView for Android that supports zooming, by various touch gestures. - chrisbanes/PhotoView
github.com
3.. 개선사항
1. 접근제어자 잘붙이기
-귀찮아도 생각하고 붙이자2. string.xml 활용
- 네이밍이 너무 어렵다.3. 변수명에 언더바쓰지않기
- 전혀 몰랏던내용 앞으로 숙지하자
4. 액티비티간 데이터공유 방법 고민
- static으로 불러오는 방식이 맞는지 고민중
5. getInstance는 싱글톤 객체에만 사용
6, e.printstacktrace 지양 - 성능 및 보안에 취약함 관련내용 포스팅
7. 클래스를 좀더 세분화하여 코드분석시에 결과만 신경쓸 수 있도록 수정
8. getcontext or this 대신 applicationcontext를 전달하여 사용하는것이 좋음
9. gson의 typetoken메소드 방식 고려
10. if나 for쓸때 한줄이라도 괄호 붙이기 아니면 한줄로 처리