2014-03-18 2 views
0

나는 listview에서 두 개의 다른 레이아웃을 사용해야합니다. 첫 번째 위치는 R.layout.profile_element_one을 사용해야하고 나머지는 R.layout.profile_element_two을 사용해야합니다. R.layout.profile_element_one에 textview의 텍스트 값을 설정하려고하지만 null 포인터 오류가 계속 발생합니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?목록보기에서 두 개의 레이아웃 사용

public View getView(int position, View convertView, ViewGroup parent) { 
    // TODO Auto-generated method stub 
    ViewHolder holder1=null; 
    View row = convertView; 
    LayoutInflater inflater = null; 

    if(row==null) 
    { 

     if(getItemViewType(position)==0) 
     { 
      holder1 = new ViewHolder(); 
      row= LayoutInflater.from(context).inflate(
        R.layout.profile_element_one, parent, false); 
      holder1.Name = (TextView)row.findViewById(R.id.tv_profile_firstnameLastname); 


     } 
     else 
     { 
      row= LayoutInflater.from(context).inflate(
        R.layout.profile_element_two, parent, false); 
     } 

    } 
    else 
    { 
     if(position ==1) 
     { 
      holder1 = (ViewHolder) row.getTag(); 
     } 
    } 



    if(position ==1) 
    { 
     holder1.Name.setText( this.obj.getFirst_name() +this.obj.getLast_name()); 

    } 




    return row; 
} 



static public class ViewHolder { 
    TextView Name; 

} 





      @Override 
public int getItemViewType(int position) { 

    int type; 
    if (position== 0) 
    { 
     type = 0; 
    } 
    else 
    { 
     type =1; 
    } 
    return type; 
} 

답변

0

당신은 당신이 당신의 목록보기 행에 대해 서로 다른 레이아웃을 필요 어댑터에 말을하기 위해 getViewTypeCountgetItemViewType 메소드를 오버라이드 (override) 할 필요가 :

@Override 
public int getViewTypeCount() { 
    return 2; // meaning that you have two kind of row 
} 

@Override 
public int getItemViewType(int position) { 
    return (condition) ? 0 : 1; // condition : is a condition to know each row is being created 
} 

이 조심 다음에 반환되는 정수 이전 방법은 0 기반 번호 매기기입니다.

+0

난 이미 당신이 도움이되지 않았다 무엇을 didnt 한 도움 – Samantha

+0

을 의미합니까 것을 시도? 오류가 발생 했습니까 ?? 당신이 잘못했는지 !!! 정확 해! –

+0

동일한 null 포인터 오류가 발생했습니다 – Samantha

0

단지 널 체크를 제거하고 작동 것이다 :

public View getView(int position, View convertView, ViewGroup parent) { 
    // TODO Auto-generated method stub 
    ViewHolder holder1=null; 
    View row = convertView; 
    LayoutInflater inflater = null; 

     if(position==0) 
     { 
      holder1 = new ViewHolder(); 
      row= LayoutInflater.from(context).inflate(
        R.layout.profile_element_one, parent, false); 
      holder1.Name = (TextView)row.findViewById(R.id.tv_profile_firstnameLastname); 


     } 
     else 
     { 
      row= LayoutInflater.from(context).inflate(
        R.layout.profile_element_two, parent, false); 
     } 


     if(position ==0) 
     { 
      holder1 = (ViewHolder) row.getTag(); 

     holder1.Name.setText( this.obj.getFirst_name() +this.obj.getLast_name()); 

    } 




    return row; 
} 
+0

아니요, 작동하지 않습니다 – Samantha

+0

내 편집 된 시험 사용해보기 –

관련 문제