2014-04-14 3 views
0

으로 부풀려진 gridview이 있습니다. 레이아웃의 예로서 이것을 고려 :gridview의 0 위치에있는 항목의 레이아웃이 변경되었습니다.

0 1 2 
3 4 5 
...... 
...... 

나는 위치 0에서 레이아웃에만 적용 그리고 어댑터가 설정 한 후 async task를 사용하여 업데이트 할 것을 레이아웃에 progress bar 있습니다. 물론 gridview를 사용하면 위치 0의 뷰에 액세스 할 수없고 다시 렌더링 될 때마다 progressbar을 표시하거나 숨길 수 없습니다. gridview의 첫 번째 자식 레이아웃을 수정하고 사용자가 항목을 스크롤 할 때마다 변경되지 않도록하려면 어떻게해야합니까?

이것은 getView() 내 방법 :

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

     ViewHolder holder = null; 
     if (convertView == null) { 

      convertView = inflater.inflate(R.layout.gridview_tvguide, null); 
      holder = new ViewHolder(); 
      holder.image = (ImageButton) convertView.findViewById(R.id.image); 
      holder.showTitle = (TextView) convertView 
        .findViewById(R.id.ShowTitle); 
      holder.showDuration = (TextView) convertView 
        .findViewById(R.id.ShowTime); 
        //by default visibility is set to GONE 
      holder.progBar = (ProgressBar) convertView.findViewById(R.id.progressBar); 
      convertView.setTag(holder); 
     } 
     else { 
      holder = (ViewHolder) convertView.getTag(); 
     } 

      //logic to control the progressbar from asynctask 
     if (this.updateNowPlaying){ 
      holder.progBar.setProgress(this.progress); 
      return convertView; 
     } 

     ImageLoader.getInstance().displayImage(
       this.shows.get(position).getShowThumb(), holder.image); 
     holder.showTitle.setText(this.shows.get(position).getShowTitle()); 
     holder.showDuration.setText(this.shows.get(position).getShowTime()); 

     return convertView; 
    } 

편집

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/rlImage" 
    android:layout_width="wrap_content" 
    android:layout_height="200dp" 
    android:paddingBottom="7dp" 
    android:paddingRight="7dp" > 

    <ImageButton 
     android:id="@+id/image" 
     android:layout_width="220dp" 
     android:layout_height="220dp" 
     android:adjustViewBounds="true" 
     android:background="@null" 
     android:scaleType="centerCrop" 
     android:src="@drawable/noimage" /> 

    <ImageButton 
     android:id="@+id/imageHover" 
     android:layout_width="220dp" 
     android:layout_height="220dp" 
     android:adjustViewBounds="true" 
     android:background="@null" 
     android:scaleType="fitXY" 
     android:src="@drawable/tile_selector_style" /> 

    <TextView 
     android:id="@+id/ShowTitle" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentRight="true" 
     android:hint="Show Title" 
     android:paddingBottom="40dp" 
     android:paddingRight="20dp" 
     android:singleLine="true" /> 

    <TextView 
     android:id="@+id/ShowTime" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentRight="true" 
     android:hint="Show Time" 
     android:paddingBottom="20dp" 
     android:paddingRight="20dp" 
     android:singleLine="true" /> 

    <ProgressBar 
     android:id="@+id/progressBar" 
     style="?android:attr/progressBarStyleHorizontal" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:visibility="gone" 
     android:layout_margin="0dp" /> 

</RelativeLayout> 

이 내 gridview입니다 : item 0이 추가에만

<GridView 
      android:id="@+id/gridView" 
      android:layout_width="0dp" 
      android:layout_height="match_parent" 
      android:clipToPadding="true" 
      android:columnWidth="200dp" 
      android:fitsSystemWindows="true" 
      android:layout_weight="1" 
      android:numColumns="auto_fit" 
      android:stretchMode="columnWidth" > 
     </GridView> 
+0

레이아웃을 방해하지 않으면 어떻게합니까? 나는'layout inflator' 코드를 추가하고 있습니다. – faizanjehangir

+0

@MikeM. 나는 가능한 해결책을 시도했다. 그것은 잘 작동하지만, 이제는이 항목이'gridview'의 일부가 아닙니다. Thats는 '스크롤링'을 의미하지 않습니다. – faizanjehangir

+0

'gridview'의 위치 0을'progressbar'가 들어있는 레이아웃으로하고 싶습니다. 'gridview' 항목의 REST는 아무리 스크롤해도 '진행 표시 줄'이 없어야합니다 ... – faizanjehangir

답변

1

가 진행 표시 줄을 표시 코드 afte r if/else 홀더 초기화 :

if (position == 0) { 
    holder.progBar.setVisibility(View.VISIBLE); 
} else { 
    holder.progBar.setVisibility(View.GONE); 
} 
+0

예,이 코드가 생성 할 내용입니다. 왼쪽 상단 항목은 'ProgressBar'를 가지며, 제대로 스크롤되어 '사용자가 항목 0'으로 다시 스크롤하면 다시 표시됩니다. 당신의 관심사는 무엇입니까? – kiruwka

+0

@MikeM. 예. 왼쪽 위 항목에만 'progressbar'를 표시하고 싶습니다. 전체'gridview'는'progressbar'를 가진 단 하나의 아이템으로 이루어질 것입니다 – faizanjehangir

+0

죄송합니다. 나는이 동작을 시각화 할 수 없습니다. 그래서, 사용자가'GridView'를 스크롤하면, 왼쪽 상단 항목이 부분적으로 화면 밖으로 스크롤됩니다. 진행 상황을 보여줍니까? 아니면 그 아래에있는 건가요? – kiruwka