2015-01-21 2 views
1

ListView 을 새로 고치기위한 this 자습서를 참조하고 있으며 효과가 있습니다. 하지만 문제는 내가 하나의 Layout 위의 ListView 내 응용 프로그램을 실행할 때 Listview 그 위에 덮어 쓰다 Layout. 나는 그 레이아웃을 ListView에 대한 헤더로 만들지 만 새로운 문제가 발생하는 것을 피하기 위해. 목록이 비어 있으면 ListViewHeader도 표시되지 않습니다. 나는 또한 Adapter에서 isEmpty()를 사용하여 여전히 Header을 표시하지 않습니다.PullToRefreshLayout을 사용하는 동안 목록보기 헤더를 표시합니다.

등급 :

 @Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    LayoutInflater layoutInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    activityView = layoutInflater.inflate(R.layout.groups_activity_layout, null, false); 

    setContentView(activityView); 



    /******************************************************************************/ 
    ViewGroup viewGroup = (ViewGroup) activityView; 
    // As we're using a ListFragment we create a PullToRefreshLayout manually 
    mPullToRefreshLayout = new PullToRefreshLayout(ItemscreenActivity.this); 

    // We can now setup the PullToRefreshLayout 
    ActionBarPullToRefresh.from(this) 
    // We need to insert the PullToRefreshLayout into the Fragment's ViewGroup 
    .insertLayoutInto(viewGroup) 
    // Here we mark just the ListView and it's Empty View as pullable 
    .theseChildrenArePullable(R.id.listView_demo_Items_gsal, android.R.id.empty).listener(this).setup(mPullToRefreshLayout); 

    /******************************************************************************/ 

    arrayListOfAItems.clear(); 
    populateItemsArrayList(ItemscreenActivity.this); 

    ItemsListWrtCnt++; 
    // Getting the reference of Button and ListView 
    listViewOfItems = (ListView) findViewById(R.id.listView_demo_Items_gsal); 

    // Get Data in Adapter to set on ListView 
    ItemscreenActivityAdapter = new ItemscreenAdapter(ItemscreenActivity.this, R.layout.group_screen_adapter_layout, arrayListOfAItems); 
    listViewOfItems.setTextFilterEnabled(false); 
    listViewOfItems.setScrollingCacheEnabled(false); 
    listViewOfItems.setCacheColorHint(Color.TRANSPARENT); 

    LayoutInflater inflater = getLayoutInflater(); 
    ViewGroup header = (ViewGroup) inflater.inflate(R.layout.group_activity_listview_header, listViewOfItems, false); 
    listViewOfItems.addHeaderView(header, null, false); 
    listViewOfItems.setEmptyView(header); 
    listViewOfItems.setVisibility(View.VISIBLE); 

    if (arrayListOfAItems.size() > 0) { 
     // Set Adapter to ListView of group if there are Items 
     ItemscreenActivityAdapter.notifyDataSetChanged(); 
     listViewOfItems.setAdapter(ItemscreenActivityAdapter); 
     ItemsListWrtCnt--; 
    } else { 
     // Show Toast if no group to display 
     Toast.makeText(ItemscreenActivity.this, "No Items", Toast.LENGTH_SHORT).show(); 
    } 


} 

XML :

당신이해야 할 일은
<?xml version="1.0" encoding="utf-8"?> 
<com.oi.demo.actionbarpulltorefresh.library.PullToRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/layout_Items" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@android:color/white" 
    android:orientation="vertical" 
    tools:ignore="UselessParent" > 

    <ListView 
     android:id="@+id/listView_demo_Items_gsal" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_above="@+id/view_layout_footer_gsal" 
     android:animationCache="false" 
     android:background="@android:color/transparent" 
     android:cacheColorHint="@android:color/transparent" 
     android:divider="@null" 
     android:persistentDrawingCache="scrolling" 
     android:scrollbarStyle="outsideOverlay" 
     android:scrollbars="vertical" 
     android:scrollingCache="false" 
     android:smoothScrollbar="true" /> 

    <View 
     android:id="@+id/view_layout_footer_gsal" 
     android:layout_width="fill_parent" 
     android:layout_height="5dp" 
     android:layout_gravity="bottom" 
     android:background="#952d4a" /> 

</com.oi.demo.actionbarpulltorefresh.library.PullToRefreshLayout> 
+0

xml 파일 코드를 게시하십시오. 또한 목록 뷰에 바인딩 데이터 코드를 표시하십시오. – GrIsHu

+0

@GrlsHu 내 코드를 추가하십시오 .. – Akshay

+0

@Akki이 android : layout_height = "wrap_content"를 android : layout_height = "match_parent"'로 변경해보고 도움이되는지 확인해보십시오. 내 최선의 추측) – kha

답변

2

단지 어댑터 밖으로 측면의 경우 조건이 설정됩니다. 다음과 같이 입력하십시오 :

if (arrayListOfAItems.size() > 0) { 
    // Set Adapter to ListView of group if there are Items 
    ItemscreenActivityAdapter.notifyDataSetChanged(); 

    ItemsListWrtCnt--; 
} else { 
    // Show Toast if no group to display 
    Toast.makeText(ItemscreenActivity.this, "No Items", Toast.LENGTH_SHORT).show(); 
} 

listViewOfItems.setAdapter(ItemscreenActivityAdapter); 

표시 헤더에 대해서는 어댑터를 설정해야합니다. 목록이 비어있는 동안 어댑터가 설정되어 있지 않으므로 헤더를 볼 수 없습니다.

사용해보기. 그것은 확실하게 작동 할 것입니다.

+0

OMG !!! 나는 그걸 상태에서 옮기는 것을 잊어 버린다. – Akshay

관련 문제