2014-01-15 62 views
1

每次我旋轉手機的屏幕時,gridview的適配器都會重新加載。我知道它的工作原理應該如下:oncreate()不被調用(其中適配器通常設置在該位置)。我已經在我的清單(android:configChanges =「orientation | keyboardHidden | keyboard | screenSize」 )和onConfigurationChanged被調用(我只是一個簡單的吐司驗證)。如何強制Gridview在屏幕旋轉後不重新加載適配器

問題是,我不知道從哪裏(方法,活動,過程等),適配器被調用,使用,重置和重新加載到GridView每次我旋轉手機。

我只需要找到一種方法,適配器只能在onCreate()中設置,當第一次創建活動時......手機旋轉時什麼也不應該發生......這就是所有.. 。

我用的是同樣的事情,那裏有沒有GridView的其他活動和它完美的作品,只是用上面顯示manifest's代碼....

任何幫助深表感謝......

+0

使用片段可能會給你想要的東西,因爲它可以更好地控制配置更改。 –

+0

該鏈接是http://developer.android.com/guide/topics/resources/runtime-changes.html –

回答

0

請嘗試添加「screenSize」屬性,如下所示:

<activity 
    android:name=".YourActivityName" 
    android:configChanges="orientation|screenSize"> 
</activity> 
+0

自己處理配置更改會使其使用替代資源變得更加困難,因爲系統不會自動應用它們爲你。當您必須避免由於配置更改而重新啓動並且不推薦用於大多數應用程序時,應該將此技術視爲最後一招.http://developer.android.com/guide/topics/resources/runtime-changes.html – Raghunandan

+0

yes! !請提出可以解決問題的辦法,它將有助於我們所有人學習! –

+0

解決方案是在主題下提供的鏈接提供方向更改 – Raghunandan

0

我認爲問題出在你的Adapter類上。 嘗試使用此代碼:

內活動onCreate方法:

GridView grid = (GridView) findViewById(R.id.gridView); 
grid.setAdapter(new Adapter(this)); 

Adapter.java

import android.content.Context; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.BaseAdapter; 
import android.widget.ImageView; 
import android.widget.TextView; 

public class Adapter extends BaseAdapter { 

private Context mContext; 
private LayoutInflater mInflator; 

public Adapter(Context context) { 

    this.mContext = context; 
    mInflator = (LayoutInflater) mContext 
      .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

} 

@Override 
public int getCount() { 
    return 10; 
} 

@Override 
public Object getItem(int arg0) { 
    return null; 
} 

@Override 
public long getItemId(int position) { 
    return 0; 
} 

static class ViewHolder { 

    private TextView appLable; 
    private ImageView appICon; 

} 

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

    View view = null; 
    if (convertView == null) { 
     final ViewHolder vHolder = new ViewHolder(); 
     view = mInflator.inflate(R.layout.item, null); 
     vHolder.appLable = (TextView) view.findViewById(R.id.lable); 
     vHolder.appICon = (ImageView) view.findViewById(R.id.icon); 
     view.setTag(vHolder); 

    } else { 
     view = convertView; 

    } 

    ViewHolder holder = (ViewHolder) view.getTag(); 
    holder.appLable.setText("position " + position); 

    return view; 
} 
} 

將這個清單裏面活動標籤:

android:configChanges="orientation" 

希望它會幫助你:)