CustiomAdapter를 이용하여 ListView에 값을 뿌렸는데,

맨 마지막에 입력된 객체의 정보만 반복해서 나옵니다.

예를 들면

1 A

2 B

3 C

4 D

이렇게 네개의 객체를 ArrayList에 입력했으면

ListView에는

4 D

4 D

4 D

4 D

로 나옵니다.

 

입력한 갯수는 맞는데, 마지막 값만 반복되는 데 어디의 문제인지를 모르겠습니다.

몇시간째 이부분에서 막히고 있습니다. 도와주세요.

 

 package project.forReader.purpose;

import java.util.ArrayList;
import project.forReader.main.R;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
import android.widget.Toast;

public class PurposeAdapter extends ArrayAdapter<Purpose>{
 private ArrayList<Purpose> items;
 private Context context;
 
 private final int READING_AMOUNT = 11;
 private final int READING_HABIT = 12;
 
 public PurposeAdapter(Context context, int textViewResourceId,
   ArrayList<Purpose> objects) {
  super(context, textViewResourceId, objects);
  // TODO Auto-generated constructor stub
  this.items = objects;
  this.context = context;
 }
 
 public View getView(int position, View convertView, ViewGroup parent){
  View v = convertView;
  if(v==null){
   LayoutInflater vi = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
   v = vi.inflate(R.layout.purpose_item, null);
  }
  Purpose p = items.get(position);
  if(p!=null){
   TextView purp = (TextView)v.findViewById(R.id.purpose);
   TextView achi = (TextView)v.findViewById(R.id.achieve);
   
   if(purp != null){
    if(p.getType() == READING_AMOUNT){
     String txt = p.getPeriod() + "일 동안 " + p.getAmount() + "권 읽기";
     purp.setText(txt);     
    }
    else if(p.getType() == READING_HABIT){
     String txt = "매일 " + p.getAmount() + "분씩 독서하기";
     purp.setText(txt);
    }
   }
   
   if(achi != null){
    if(p.getType() == READING_AMOUNT){
     //achi.setText(p.getAchieve());
     achi.setText("0%");
    }
    else if(p.getType() == READING_HABIT){
     //achi.setText(p.getAchieve());
     achi.setText("0%");
    }
    
   }
   
  }
  return v;
 }
}

 

아래는 ListView와 Adapter를 연결하는 소스 부분입니다.

 pList = new ArrayList<Purpose>();
  getPurposeList(this);
  ListView view = (ListView)findViewById(R.id.pur_list);
  PurposeAdapter adpt = new PurposeAdapter(AllView.this, R.layout.purpose_item, pList);
  view.setAdapter(adpt);