
처음으로 질문 올려보네요..
위 사진과 같이 리스트뷰 갱신시 이미지가 하나만 나오고 있습니다.
한 리스트뷰에 한 이미지만 나올때도 있고, 여러 리스트뷰에 같은 이미지 여러개가 나올때도 있어요.
DB에 String 형태로 URI를 저장시키고, 리스트뷰 갱신시킬때
그것을 String형태로 어탭터에 전달해서, 어댑터에서 그것을 URI.parse 해서 URI로 변환시켜서 비트맵이미지 만들어서 쓰고있어요.
//--------------------------- Main의 리스트뷰 갱신부분.. ---------------------------------
public void reset_wardrobe() {
adapter_wardrobe = new CustomAdapter_listview_wardrobe(getApplicationContext());
// 리스트뷰 참조 및 Adapter달기
listView_wardrobe = (ListView) findViewById(R.id.listView_wardrobe1);
listView_wardrobe.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
listView_wardrobe.setAdapter(adapter_wardrobe);
arraylist_wardrobe = dbManager.select_clothesName();
for (int i = 0; i < arraylist_wardrobe.size(); i++) {
String clothes_name = arraylist_wardrobe.get(i);
String file_name = dbManager.select_fileName(arraylist_wardrobe.get(i)); // URI를 String로
String category_name = dbManager.select_category_byname(arraylist_wardrobe.get(i));
String season_name = dbManager.select_season_byname(arraylist_wardrobe.get(i));
String temp_name = dbManager.select_temp_byname(arraylist_wardrobe.get(i));
String weather_name = dbManager.select_weather_byname(arraylist_wardrobe.get(i));
String favor_name = dbManager.select_favor_byname(arraylist_wardrobe.get(i));
Log.i("MainActivity", "season_name : " + season_name);
if (clothes_name.equals("ㅡㅡㅡㅡ")) clothes_name = "";
if (file_name.equals("ㅡㅡㅡㅡ")) file_name = "";
if (category_name.equals("ㅡㅡㅡㅡ")) category_name = "";
if (season_name.equals("ㅡㅡㅡㅡ")) season_name = "";
if (temp_name.equals("ㅡㅡㅡㅡ")) temp_name = "";
if (weather_name.equals("ㅡㅡㅡㅡ")) weather_name = "";
if (favor_name.equals("ㅡㅡㅡㅡ")) favor_name = "";
Listview_item_wardrobe c1 = new Listview_item_wardrobe(file_name, category_name, clothes_name,
season_name, temp_name, weather_name, favor_name);
adapter_wardrobe.add(c1);
}
adapter_wardrobe.setCheckCount();
// Data가 변경 되있음을 알려준다.
adapter_wardrobe.notifyDataSetChanged();
}
//--------------------------- 커스텀 어댑터에서 뷰 만드는 부분.. ---------------------------------
public View getView(final int position, View convertView, ViewGroup parent) {
//android:background="?android:attr/activatedBackgroundIndicator" 추가시 리스트뷰 선택
// TODO Auto-generated method stub
View v = convertView;
final PersonViewHolder viewHolder;
// 리스트 아이템이 새로 추가될 경우에는 v가 null값이다.
// view는 어느 정도 생성된 뒤에는 재사용이 일어나기 때문에 효율을 위해서 해준다.
if (v == null) {
// inflater를 이용하여 사용할 레이아웃을 가져옵니다.
v = ((LayoutInflater) mContext
.getSystemService(Context.LAYOUT_INFLATER_SERVICE))
.inflate(R.layout.custom_listview_wardrobe, null);
viewHolder = new PersonViewHolder();
// 레이아웃이 메모리에 올라왔기 때문에 이를 이용하여 포함된 뷰들을 참조할 수 있습니다.
viewHolder.imgClothesIcon = (ImageView) v.findViewById(R.id.imageView_clothesicon_wardrobe);
viewHolder.category = (TextView) v.findViewById(R.id.textView_category_wardrobe);
viewHolder.clothes_name = (TextView) v.findViewById(R.id.textView_clothesname_wardrobe);
viewHolder.season = (TextView) v.findViewById(R.id.textView_season_wardrobe);
viewHolder.temp = (TextView) v.findViewById(R.id.textView_temp_wardrobe);
viewHolder.weather = (TextView) v.findViewById(R.id.textView_weather_wardrobe);
viewHolder.favor = (TextView) v.findViewById(R.id.textView_favor_wardrobe);
viewHolder.checkbox_cart = (CheckBox) v.findViewById(R.id.checkbox_wardrobe);
v.setTag(viewHolder);
}
else {
viewHolder = (PersonViewHolder) v.getTag();
}
viewHolder.checkbox_cart.setChecked(isCheckedConfrim[position]);
viewHolder.checkbox_cart.setFocusable(false);
viewHolder.checkbox_cart.setClickable(false);
v.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
viewHolder.checkbox_cart = (CheckBox) v.findViewById(R.id.checkbox_wardrobe);
Log.i("Addpter_cart", "click Posion = " + position);
setOpposition(position);
viewHolder.checkbox_cart.setChecked(isCheckedConfrim[position]);
}
});
// 받아온 position 값을 이용하여 배열에서 아이템을 가져온다.
mUser = getItem(position);
// 데이터의 실존 여부를 판별합니다.
if (mUser != null) {
// 데이터가 있다면 갖고 있는 정보를 뷰에 알맞게 배치시킵니다.
if (mUser.getClothesIcon() != null) {
try {
Bitmap image_bitmap = MediaStore.Images.Media.getBitmap(mContext.getContentResolver(), Uri.parse(mUser.getClothesIcon()));
viewHolder.imgClothesIcon.setImageBitmap(image_bitmap);
//Bitmap image_bitmap = MediaStore.Images.Media.getBitmap(mContext.getContentResolver(), Uri.parse(mUser.getClothesIcon()));
//Drawable d = new BitmapDrawable(image_bitmap);
//viewHolder.imgClothesIcon.setImageDrawable(d);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
viewHolder.category.setText(mUser.getCategory());
viewHolder.clothes_name.setText(mUser.getClothesName());
viewHolder.season.setText(mUser.getSeason());
viewHolder.temp.setText(mUser.getTemp());
viewHolder.weather.setText(mUser.getWeather());
viewHolder.favor.setText(mUser.getFavor());
}
//checkbox_cart.setChecked(((ListView)parent).isItemChecked(position));
return v;
}
public class PersonViewHolder {
public ImageView imgClothesIcon;
public TextView clothes_name;
public TextView category;
public TextView season;
public TextView temp;
public TextView weather;
public TextView favor;
public CheckBox checkbox_cart;
}
//-------------------------------------------------------------------------------------------------
도움 부탁드리겠습니다.
긴 내용 읽어주셔서 감사합니다.