제목 그대로... 이미지를 굳이 drawable 등에 넣어서 보여주지 말고 url로 바로 연결해버리는 방법!! 이다.
listview 위에 있는 ImageView 안에 url을 이용해 사진을 넣을 것이다.
https://ticssfm.tistory.com/18
이건 이전 포스팅인데 여기의 부속 내용이다!
코드를 필요한 부분만 잘랐으므로 모든 코드를 보려면 저 링크로 들어가기!
사용 방법
구찌 공식 스토어에서 가져온 사진이다.
Main
// 이름과 url을 매치할것이다. 둘 다 배열에 넣어주었다.
String p_name[] = {"583571 1X5CG 6775", "660195 17QDT 2582", "443496 DRWAR 9022", "AS2696 B06364 NE798", "AS2756 B06315 NF024", "AS2785 B06505 ND365"};
String image[] = {"https://media.gucci.com/style/DarkGray_Center_0_0_800x800/1613669409/583571_1X5CG_6775_001_058_0020_Light-GG.jpg", "https://media.gucci.com/style/DarkGray_Center_0_0_650x650/1625733904/360_660195_17QDT_2582_001_100_0000_Light-.jpg",
"https://media.gucci.com/style/DarkGray_Center_0_0_650x650/1626455703/360_443496_DRWAR_9022_001_100_0000_Light-GG-2016.jpg", "https://www.chanel.com/images/q_auto,f_auto,fl_lossy,dpr_auto/w_1920/flap-bag-black-white-tweed-aged-calfskin-aged-pale-yellow-metal-tweed-aged-calfskin-aged-pale-yellow-metal-packshot-default-as2696b06364ne798-8840481177630.jpg",
"https://www.chanel.com/images/q_auto,f_auto,fl_lossy,dpr_auto/w_1920/e_trim:0/shopping-bag-black-white-shearling-lambskin-gold-tone-metal-shearling-lambskin-gold-tone-metal-packshot-default-as2756b06315nf024-8840469807134.jpg",
"https://www.chanel.com/images/q_auto,f_auto,fl_lossy,dpr_auto/w_1920/flap-bag-black-pink-gray-embroidered-wool-tweed-ruthenium-finished-metal-embroidered-wool-tweed-ruthenium-finished-metal-packshot-default-as2785b06505nd365-8840473378846.jpg"};
//PersonalData를 만들어서 보내줄 것이다.
PersonalData personalData = new PersonalData();
//이름에 따라 url 연결하고 personalData로 보내기
for(int j = 0; j < p_name.length; j++){
if(p_name[j].equals(name)) {
personalData.setMember_image(image[j]);
break;
}
else{
}
}
mArrayList.add(personalData);
mAdapter.notifyDataSetChanged();
personalData로 보내서 UserAdapter로 보낼 것이다.
personalData
public class PersonalData {
private String member_image;
public String getMember_image() {
return member_image;
}
public void setMember_image(String member_image) {
this.member_image = member_image;
}
}
UserAdapter
public class UserAdapter extends RecyclerView.Adapter<UserAdapter.CustomViewHolder> {
private ArrayList<PersonalData> mList = null;
private Activity context = null;
Bitmap bitmap; // 이미지 불러올 때 사용
public UserAdapter(Activity context, ArrayList<PersonalData> list) {
this.context = context;
this.mList = list;
}
class CustomViewHolder extends RecyclerView.ViewHolder {
protected ImageView image;
public CustomViewHolder(View view) {
super(view);
this.image = (ImageView) view.findViewById(R.id.saleImage);
}
}
@Override
public CustomViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) {
View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.listview, null);
CustomViewHolder viewHolder = new CustomViewHolder(view);
return viewHolder;
}
@Override
public void onBindViewHolder(@NonNull CustomViewHolder viewholder, int position) {
//이미지 받아오는 부분
Thread mThread = new Thread(){
@Override
public void run() {
try{
URL url = new URL(mList.get(position).getMember_image());
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoInput(true);
conn.connect();
InputStream is = conn.getInputStream();
bitmap = BitmapFactory.decodeStream(is);
} catch (MalformedURLException e){
e.printStackTrace();
} catch (IOException e){
e.printStackTrace();
}
}
};
mThread.start();
try{
mThread.join();
viewholder.image.setImageBitmap(bitmap);
} catch (InterruptedException e){
e.printStackTrace();
}
}
@Override
public int getItemCount() {
return (null != mList ? mList.size() : 0);
}
}
thread를 이용해 처리하며 비트맵으로 쪼개서 사용한다.!
'컴퓨터 > android, ios' 카테고리의 다른 글
[Android Studio] toolbar로 navigation view 구현하기! (왼쪽 뒤로가기 부분 클릭해서 메뉴 열기) (0) | 2021.09.27 |
---|---|
[Android Studio] SharedPreferences에 로그인 정보 저장, 자동 로그인 (0) | 2021.09.05 |
[Android Studio] 아래로 swipe해서 새로고침 하는 listview 구현하기 (0) | 2021.08.22 |
[Android Studio] activity에서 custom dialog로 정보 보내고 dialog에서 다른 activity로 이동하기 (0) | 2021.08.11 |
[Android Studio] Spinner 선택에 따라 화면 바꾸기 (0) | 2021.07.20 |