2014-04-14 2 views
0

У меня есть gridview, который я раздуваю с помощью relativelayout. Рассмотрим это на примере макета:Изменения в макете позиции в позиции 0 сетки зрения

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

У меня есть progress bar в макете, что я хочу применить только к раскладке в положении 0. И обновлять его с помощью async task после того, как адаптер установлен. Конечно, с 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; 
    } 

EDIT

<?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:

<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

Как я могу это сделать, не нарушая расположение? Я также добавляю свой код разметки разметки. – faizanjehangir

+0

@MikeM. Я пробовал ваше возможное решение. Он отлично работает, но теперь проблема в том, что этот элемент больше не является частью 'gridview'. Это означает, что нет 'прокрутки'. – faizanjehangir

+0

Я хочу, чтобы позиция 0 «gridview» была макетом, который содержит в нем «progressbar». REST элементов в 'gridview' должен' NOT' иметь в них 'progressbar', независимо от того, сколько я прокручиваю ... – faizanjehangir

ответ

1

показать прогресс бар только для item 0 добавить этот код afte r if/else Инициализация вашего держателя:

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

Да, Thats, что этот код будет производить. Верхний левый элемент будет иметь «ProgressBar», который будет прокручиваться правильно и снова показан, когда пользователь прокручивается до «item 0». В чем вас беспокоит? – kiruwka

+0

@MikeM. да. Я хочу, чтобы «progressbar» отображался только в верхнем левом элементе. Весь «gridview» будет состоять только из 1 элемента с «progressbar» – faizanjehangir

+0

извините, я не могу визуализировать это поведение. Таким образом, когда пользователь прокручивает «GridView», позволяет сказать, что верхний левый элемент частично прокручивается из экрана. Показывает ли это прогресс? Или под ним? – kiruwka

Смежные вопросы