0

저는 뷰 페이지를 사용하여 조각을 만들고 arraylist를 전달하려고합니다. 그래서 다음 일을 시도 :인스턴스를 사용하여 작업에서 조각으로 사용자 정의 개체 arraylist 전달하는 방법

MainActivity :

private ArrayList<customers> mArrayList = null; 

    ViewPagerAdapter adapter = new ViewPagerAdapter(MainActivity.this.getSupportFragmentManager()); 

    adapter.addFrag(NewCustomer.newInstance(mArrayList), "NewCustomer"); 

이제 조각 클래스에서 내가 만드는 오전 예 :

public static final ArrayList<customers> data = new ArrayList<customers>(); 

public static final NewCustomer newInstance(ArrayList<customers> mArrayList) { 

     NewCustomer f = new NewCustomer(); 
     Bundle bdl = new Bundle(1); 
     bdl.putParcelableArrayList(data, mArrayList); 
     f.setArguments(bdl); 
     return f; 
    } 

하지만이 작동하지 않습니다. bdl.putParcelableArrayList에 오류가 표시됩니다. arraylist를 가져 와서 해당 클래스의 로컬 arraylist에 저장하고 싶습니다.

내 사용자 지정 개체로 arraylist를 가져올 수 있습니까?

답변

1

시도해 볼 수 있습니까?

public static final NewCustomer newInstance(ArrayList<customers> mArrayList) { 

     NewCustomer f = new NewCustomer(); 
     Bundle bdl = new Bundle(1); 
     this.data = mArrayList; // assign its Value 
     bdl.putParcelableArrayList(data, mArrayList); 
     f.setArguments(bdl); 
     return f; 
    } 

this.data = mArrayList은 단편의 현재 멤버 변수에 값을 할당한다. 이제는 현재 조각으로 액세스 할 수 있습니다.

+0

당신은해야한다 :

public static final String KEY; 

코드 다음 당신의 조각 사용 로컬 변수로 ArrayList를 효율적으로 활용하려면 다음 작업을 수행

putParcelableArrayList(String key, ArrayList<? extends Parcelable> value) 

이 당신의 조각에 다음과 같은 키를 정의합니다 정의를 확인 왜 당신이 제공하는 코드가 작동하는지 그리고 무엇을하는지 설명하십시오. 간단히 코드를 제공하면 OP와 유사한 사용자가 될 수있는 다음 사용자에게 도움이되지 않습니다. – AxelH

+0

@AxelH 네, 맞습니다. 사과드립니다. –

+0

사과하지 마세요.)하지만 정적 컨텍스트에서'this'의 사용법을 어떻게 설명하고 있습니까? 나는 그 부분을 정말로 얻지 못한다. 또는 메소드의 잘못된 사용; – AxelH

1

모델 클래스 "NewCustomer"가 Parcelable을 구현하는지 확인하십시오.

4

전달할 첫 번째 매개 변수가 잘못되었습니다.

@Override 
public void onStart() { 
    super.onStart(); 
    Bundle arguments = getArguments(); 
    ArrayList<customers> customer_list = arguments.getParcelable(KEY); 
} 
+0

잘 쓰여 있습니다. [소스] (https://developer.android.com/reference/android/os/Bundle.html)를 추가하고 KEY로 putParcelable을 호출하는 방법을 보여줄 수도 있습니다 (상수이기 때문에 초기화해야합니다) – AxelH