2017-10-13 7 views
0

enter image description here표시 빈 목록 항목은 전체 목록은 내가이</p> <p><img src="https://i.stack.imgur.com/Sm2vX.png" alt="enter image description here"> 뭔가를 달성하고자하는 안드로이드

에로드 그리고이

어떻게 빈의이 종류를 보여줄 수있을 때까지 빈 목록은 전체 목록이로드 될 때까지 snapchat의 일부 애니메이션과 결합 된 udemy와 같습니다.

+0

원하는 디자인으로보기를 추가하고로드가 완료되면 목록보기를 숨기고 자리 표시 자보기를 숨기고 ListView를 표시합니다. – Zoe

+0

https://github.com/sharish/ShimmerRecyclerView – LordRaydenMK

답변

0

이제 조금 더 설명 했으므로이 대답을 편집하고 있습니다. 애니메이션

SkyScanner fake placeholders

  • 가지고 : 당신이 데이터에 대한 이전의 모든 정보를 검색 할 수 없기 때문에

    스카이 스캐너와 비슷한 일을하기 위해

    , 당신은이 단계를 수행해야합니다 가짜 자리를 표시 Lottie 라이브러리 살펴보기 정말 멋진 애니메이션을 할 수 있고 전화 응답이있을 때까지이 애니메이션을 루프로 실행하려면 여기에서 라이브러리를 확인하십시오. https://github.com/airbnb/lottie-android Lottie는 벡터 애니메이션을 수행하는 좋은 방법이며 json 파일을 사용합니다. 정말 가볍지 만 할 수있어. 물론 옛날 스타일의 애니메이션.

  • 자리 표시 자에 대한 논리는 다음과 같습니다. 데이터 세트의 내용을 전환하려고합니다. 어댑터가 데이터 세트의 내용이 표시 할 실제 데이터의 종류인지 확인합니다 실제 XML로 채우기 위해 실제 recyclerview 홀더를 사용합니다. 실제 데이터가 아닌 경우 placeholder xml을 사용하여 행을 부 풀릴 것입니다 (동일한 크기와 처리로 원하는 결과를 얻을 수 있습니다).) 및 자리 표시 자에 대한 새로운 recyclerview 홀더를 사용하여 행 동작을 제어 할 수 있습니다. 예를 들어 위치를 기준으로 애니메이션 또는 인터 케 일 객체 비헤이비어를 제어 할 수 있습니다.

    @Override 
    public int getItemViewType(int position) { 
        return mDataSet.get(position) instanceof YourCustomObject ? VIEW_TYPE_DATA : VIEW_TYPE_PLACEHOLDER; 
    } 
    
    :

실제 데이터의 소유자로 객체 YourCustomObject을 고려하지만만큼 당신이 당신의 가짜 자리에 대한 데이터의 다른 종류의 일을 모든 종류의 수 있습니다, 어댑터 내부의 논리는 이것이다

그런

@Override 
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
    RecyclerView.ViewHolder holder; 
    if (viewType == VIEW_TYPE_DATA) { 
     View v = LayoutInflater.from(parent.getContext()) 
       .inflate(R.layout.item_real_data, parent, false); 
     holder = new RealDataHolder(v); 
    } else { 
     View v = LayoutInflater.from(parent.getContext()) 
       .inflate(R.layout.item_placeholder, parent, false); 
     holder = new PlaceholderHolder(v); 
    } 
    return holder; 
} 

onBindViewHolder에 홀더의 유형을 확인하는 것을 잊지 마세요
@Override 
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { 
    if (holder instanceof RealDataHolder) { 
YourCustomObject data = (YourCustomObject) dataSet.get(position); 
(...) 

0 어댑터 내부에 데이터 집합 객체 (자바 클래스)의 목록 나는 그것이 도움이되기를 바랍니다

는 것을 잊지 마세요.

+0

그렇지 않은 것처럼 보입니다. 내가 원하는 것을 얻으십시오. 빈 자리 표시자는 목록 항목의 정확한 수를 얻기 전에 거기에 있어야합니다. 날씨가 중요하지 않습니다. 1 또는 50을 표시해야합니다. 빈 자리 표시 자 10 개를 말한 다음 전체 목록이 표시됩니다. –

+0

흠, 나는 대략 생각했습니다. 당신이 SkyScanner의 앱을 사용했을 때, 그들은 위조 된 자리 표시자인 것처럼, 내가 제공 한 동일한 코드를 사용하고 다른 종류의 객체를 위해 데이터 세트를 교체합니다.위의 코드는 데이터 세트에 데이터의 종류를 확인하고 그 안에 자리 표시자를 표시하므로 누락 된 것은 새로운 가져 오기 호출을 트리거 할 때마다 (10) 다른 오브젝트에 대한 소스의 데이터 내용을 전환하는 것입니다. 정보. 게다가 멋진 자리 표시자를 원하면 Lottie를 사용하라는 제 제안을 유지하면서 환상적인 조명 라이브러리를 사용하여 멋진 애니메이션을 완성하십시오. –

+0

고마워, 너 최고야. –