2013-04-20 5 views
0
public AdapterClass(Context a, int resourceID, List <Info> entries) { 
    super(a, resourceID, entries); 
    this.layoutResource = resourceID; 
} 

@ 
Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    final Object custom = getItem(position); 
    LinearLayout rowView = null; 
    if (convertView == null) { 
     rowView = new LinearLayout(getContext()); 
     LayoutInflater vi = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     vi.inflate(layoutResource, rowView); 
    } else 
     rowView = (LinearLayout) convertView; 

    if (custom != null) { 

    } 
    return rowView; 
} 

런타임에 두 개의 다른 레이아웃을 전달할 때 getView() 메서드에서 전달할 레이아웃을 어떻게 식별 할 수 있습니까? ArrayAdapter을 사용하고 있습니다.런타임에 listView에서 레이아웃을 확인하는 중

+0

에 전달 된 부모 ID에 대해 점검 할 수 있어야한다을 전달 레이아웃 ID의 확인하기 위해 레이아웃을 사용할 수 있습니까? –

+0

@ PankajKumar : 어떤 코드가 필요한지, 제가 그것을 어댑터에 전달하는 방식으로하고 싶습니다. – Kevin

+0

@kevin 내 대답을 확인 –

답변

1

당신은

if(passedresourceID == R.layout.layout1) 
{ 
    //do something 
} 
else if(passedresourceID == R.layout.layout2) 
{ 
    //do something 
} 
+0

감사합니다 sankar ... passedResouceID int 및 R.layout.layout1 ... 작동 할 것입니다. – Kevin

+1

예. 둘 다 int 남자입니다. 확실히 작동 할 것입니다. –

1

당신은 전체 코드가 getView()

public View getView(int position, View convertView, ViewGroup parent) { 

switch (parent.getId()){ //check your ids here 
case (R.layout.layoutToCheck): 
break; 
case (R.layout.otherLayoutToCheck): 
... 

final Object custom = getItem(position); 
LinearLayout rowView = null; 
if (convertView == null) { 
    rowView = new LinearLayout(getContext()); 
    LayoutInflater vi = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    vi.inflate(layoutResource, rowView); 
+0

R.Java에서 ID를 가지고 있지만 R.id.layoutToCheck를 얻지 못했습니다. – Kevin

+0

'R.id.YourLayoutName'은'R.java'에 포함 된'id'를 반환합니다 – codeMagic

+0

죄송합니다. 내 게시물을 편집했습니다. 서두르다. – codeMagic

관련 문제