마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

getView 메소드 때문에 어플이 죽네요...

0 추천
class SkillAdapter extends BaseAdapter {
 LayoutInflater mInflater;
 SkillItem Item;

 public SkillAdapter(Context context, SkillItem aItem) {
  mInflater = (LayoutInflater)context.getSystemService(
    Context.LAYOUT_INFLATER_SERVICE);
  Item = aItem;
 }

 @Override
 public int getCount() {
  // TODO 자동 생성된 메소드 스텁
  return Item.Learn.size()+8;
 }

 @Override
 public Object getItem(int position) {
  // TODO 자동 생성된 메소드 스텁
  return null;
 }

 @Override
 public long getItemId(int position) {
  // TODO 자동 생성된 메소드 스텁
  return position;
 }
 
 public int getViewTypeCount() {
  return 4;
 }

 @Override
 public View getView(int position, View convertView, ViewGroup parent) {
  // TODO 자동 생성된 메소드 스텁
  if(convertView == null) {
   int res;
   if(position<=6) {
    res = R.layout.mlist1;
   } else {
    res = R.layout.mlist2;
   }
   convertView = mInflater.inflate(res, parent, false);
  }
  
  switch(position) {
  case 0:
   ImageView image0 = (ImageView)convertView.findViewById(R.id.mlist1_image1);
   image0.setImageResource(Item.Icon);
   TextView text0 = (TextView)convertView.findViewById(R.id.mlist1_text1);
   text0.setText(Item.Name);
   text0.setTextSize(20);
   break;
  case 1:
   TextView text1 = (TextView)convertView.findViewById(R.id.mlist1_text1);
   text1.setText("[타입] "+Item.Type);
   break;
  case 2:
   TextView text2 = (TextView)convertView.findViewById(R.id.mlist1_text1);
   text2.setText("[대상] "+Item.Target);
   break;
  case 3:
   TextView text3 = (TextView)convertView.findViewById(R.id.mlist1_text1);
   text3.setText("[필요 무기] "+Item.Weapon);
   break;
  case 4:
   TextView text4 = (TextView)convertView.findViewById(R.id.mlist1_text1);
   text4.setText("[시전] "+Item.Casting.get(0));
   break;
  case 5:
   TextView text5 = (TextView)convertView.findViewById(R.id.mlist1_text1);
   text5.setText("[재사용] "+Item.Cooltime.get(0));
   break;
  case 6:
   TextView text6 = (TextView)convertView.findViewById(R.id.mlist1_text1);
   text6.setText("[설명]\n"+Item.Explain);
   break;
  case 7:
   TextView text7_1 = (TextView)convertView.findViewById(R.id.mlist2_text1);
   TextView text7_2 = (TextView)convertView.findViewById(R.id.mlist2_text2);
   TextView text7_3 = (TextView)convertView.findViewById(R.id.mlist2_text3);
   TextView text7_4 = (TextView)convertView.findViewById(R.id.mlist2_text4);
   text7_1.setText("스킬명");
   text7_2.setText("습득 레벨");
   text7_3.setText("소모 값");
   text7_4.setText("사용 효과");
   break;
  default:
   TextView text8_1 = (TextView)convertView.findViewById(R.id.mlist2_text1);
   TextView text8_2 = (TextView)convertView.findViewById(R.id.mlist2_text2);
   TextView text8_3 = (TextView)convertView.findViewById(R.id.mlist2_text3);
   TextView text8_4 = (TextView)convertView.findViewById(R.id.mlist2_text4);
   
   text8_1.setText(Item.Name+" Lv"+Integer.toString(position-7));
   text8_2.setText(Item.Learn.get(position-8));
   text8_3.setText(Item.Consume.get(position-8));
   text8_4.setText(Item.EffectMain);
   break;
  }
  return convertView;
 }
 
}

 

position 8부터는 1개이상인 여러개의 데이터인데 개수는 가변적이에요...

근데 0~7 일때는 어찌어찌 지저분한 코드로도 되게했는데

8부터는 이상하게되더라구여...

 

getView 에 재대로 할려면 어떻게 정의해야하죠?

 

ygh (520 포인트) 님이 2014년 6월 24일 질문

1개의 답변

0 추천
에러로그를 보여주셔야 정확히 원인을 알 수 있죠..

 

0~7개일 때는 정상인데 그 이상부터는 크래쉬가 난다면 아마 어레이 인덱스 문제로 짐작됩니다만
익명사용자 님이 2014년 6월 25일 답변
...