2013-04-17 3 views
0

목록보기 용 사용자 정의 어댑터가있는 Android 애플리케이션을 작성하고 있습니다.Adapter.getItem (position) 응용 프로그램이 작동하지 않습니다.

어댑터는 mainActivity 클래스의 변수이며 사용자 정의 클래스 목록을 포함합니다. 다른 활동에서이 목록의 클래스에 액세스해야하지만 어댑터의 getItem (위치)에 도달하면 응용 프로그램이 충돌하는 것 같습니다. 기본 사용자 정의 어댑터가있는 MainActivity 클래스의

:

기본적으로이 같은 응용 프로그램이 모습입니다

public class MainActivity extends Activity { 
    public static MyAdapter myAdapter; 
    ... 
} 

어댑터 만의 getItem 같은 기본적인 기능을 가지고 있으며, 사용자의 목록이 있습니다 (기본) 클래스

public class MyAdapter extends BaseAdapter { 
    private ArrayList<MyClass> tours = new ArrayList<MyClass>(); 

    @Override 
    public Object getItem(int arg0) { 
     return getItem(arg0); 
    } 
    ... 
} 

다른 활동이 열리면 색인이 전달되어 목록에서 특정 개체에 액세스합니다.

MyClass myClass = (MyClass)MainActivity.myAdapter.getItem(index); 

수 :

유일한 문제는 내가,이 목록에서 응용 프로그램이 충돌을 클래스에 액세스하려고 할 때 ... 내가 어댑터 목록에서 클래스에 액세스하는 코드를 다음 사용한다는 것입니다 누군가 내가 뭘 잘못하고 있는지 또는 앱이 왜 망가 졌는지 말해 주시겠습니까? 이 방법을 완료 할 수있는 방법은 없습니다

@Override 
public Object getItem(int arg0) { 
    return getItem(arg0); 
} 

앱에서 오버 플로우 예외의 몇 가지 유형을 던져 때까지 단순히 또 다시 자신을 호출 :

+0

logcat 출력을 게시 할 수 있습니까? – Tom

+0

대신'BaseAdapter'를 사용하고'ArrayAdapter'를 사용하여 제안하는 비공개'ArrayList'를 유지하십시오. 이는 유스 케이스를 위해 특별히 제작 된 BaseAdapter의 확장입니다. – FoamyGuy

답변

4

이것은 순환 논리이다. 다음과 같아야합니다.

@Override 
public MyClass getItem(int arg0) { 
    return tours.get(arg0); 
} 

이 메서드가 목록에서 데이터를 반환하는 방법에 유의하십시오.

+0

감사합니다! 내가 tours.get 및 다른 반환 유형을 시도, 지금 내가 왜 가장 확실한 해결책을 시도하지 않았는지 궁금하네요 : 그 두 함께 :) –

관련 문제