안녕하세요

리스트뷰를 수정해서 제가 원하는 리스트뷰를 만들으려고하는데 잘 안되서 질문드립니다.

ArrayAdapter 를 확장한 클래스에서 getView 를 이용하여서 기본적으로 원하는 것까진 만들었습니다.

리스트가 있고 그 리스트의 각 아이템 들은 텍스트뷰 6개를 가지는 뷰로 구성 되어있습니다.

이렇게 텍스트뷰 6개를 가진 뷰를 만들고 맨아래에 텍스트뷰 1개를 서서 다른 리스트들의 값을 정리하는 그런 식인데요


그림1.png 

허접 하지만 이런 식의 리스트입니다.

6개의 텍스트 뷰를 가진 커스텀 리스트 뷰를 만들었을땐 동작이 잘되었습니다.

하지만 마지막에 텍스트 뷰가 2개 들어있는 뷰를 추가하면 스크롤을 내려서 맨마지막께 보여지게 한후 다시 스크롤을 올려서 마지막 뷰가 사라지고 다른 뷰가 다시 불러질때, 오류가 납니다.(음 설명이 부족하네요 죄송합니다.-_-;;)

간단하게 말씀드리면

리스트 뷰를 커스터마이징 하는데 각 리스트 목록에 원하는 여러개의 뷰를 넣는 방법? 이렇게 설명이 될거같습니다.

어떻게하는건지 알수 있을까요?


아래는 그부분의 소스입니다.
result_list_custom_Adapter rlcA = null;     
  rlcA = new result_list_custom_Adapter(this,R.layout.result_list_custom_layout,td_list);
  //rlcA = new result_list_custom_Adapter(this,0,td_list);  lv.setAdapter(rlcA);



result_list_custom_Adapter.class

public class result_list_custom_Adapter extends ArrayAdapter<Train_Data> {
 private List<Train_Data> td_list;
 private Context context;
 private int tdListSize;
 private List<String> fare_list;
 public result_list_custom_Adapter(Context context,
   int textViewResourceId,List<Train_Data> objects) {
  super(context, textViewResourceId, objects);
  this.context = context;
  this.td_list = objects;
  tdListSize = td_list.size();
 }
 
 @Override
 public View getView(int position, View convertView, ViewGroup parent) {
  View v = convertView;
  LayoutInflater vi = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
  
Log.i("test","int getView");
  if(position == tdListSize-1){
   Log.i("test","in last view");
 
    
   try{
   v = vi.inflate(R.layout.emptyviewlayout ,null);
   }catch(Exception e){
    Log.i("error","list error");
   }
  
   TextView tv_emptyText = (TextView)v.findViewById(R.id.EmptyViewTextView);
 
   tv_emptyText.setText("...........");
  }else{
   Log.i("list",String.valueOf(position));
   
   Log.i("test","in list test1");
   if(v == null){
    v = vi.inflate(R.layout.result_list_custom_layout ,null);
    Log.i("test","in list test2");
   }
   Log.i("test","in list test3");
   TextView tv_train_type = (TextView)v.findViewById(R.id.result_row_train_type_textview);
   TextView tv_start_station = (TextView)v.findViewById(R.id.result_row_start_station);
   TextView tv_end_station = (TextView)v.findViewById(R.id.result_row_end_station);
   TextView tv_current = (TextView)v.findViewById(R.id.result_row_current);
   TextView tv_start_time = (TextView)v.findViewById(R.id.result_row_start_time);
   TextView tv_end_time = (TextView)v.findViewById(R.id.result_row_end_time);
   Log.i("test","in list test4");
   Log.i("test","int list td point value "+String.valueOf(position));
   Log.i("test","int list td list size "+String.valueOf(td_list.size()));
   
   
   Train_Data td = td_list.get(position);
   if(td ==null){
    Log.i("error","td not");
   }
   Log.i("test","in list test41");
   tv_train_type.setText( td.getTran_type()  );
   Log.i("test","in list test42");
   tv_start_station.setText( td.getStart_city()  );
   Log.i("test","in list test43");
   tv_end_station.setText( td.getEnd_city() );
   Log.i("test","in list test44");
   tv_current.setText( td.getIs_seat() );
   Log.i("test","in list test45");
   tv_start_time.setText(td.getStart_time());
   Log.i("test","in list test46");
   tv_end_time.setText(td.getEnd_time());
   Log.i("test","in list test5");

  }
  return v;
 }
 
}