Android 如何强制Gridview在屏幕旋转后不重新加载适配器

Android 如何强制Gridview在屏幕旋转后不重新加载适配器,android,gridview,android-adapter,baseadapter,Android,Gridview,Android Adapter,Baseadapter,每次我旋转手机屏幕时,gridview的适配器都会重新加载 我的清单(android:configChanges=“orientation | keyboardHidden | keyboard | screenSize”)上有这一点,我知道它正在正常工作:不调用oncreate()(通常设置适配器的地方),调用onConfigurationChanged(我只有一个简单的toast进行验证) 问题是,我不知道从哪里(方法、活动、流程等)调用、使用、重置适配器,并在每次我旋转手机时将其重新加载到

每次我旋转手机屏幕时,gridview的适配器都会重新加载

我的清单(android:configChanges=“orientation | keyboardHidden | keyboard | screenSize”)上有这一点,我知道它正在正常工作:不调用oncreate()(通常设置适配器的地方),调用onConfigurationChanged(我只有一个简单的toast进行验证)

问题是,我不知道从哪里(方法、活动、流程等)调用、使用、重置适配器,并在每次我旋转手机时将其重新加载到gridview

我只需要找到一种方法,在首次创建活动时,仅在onCreate()中设置适配器。。当手机旋转时,不应发生任何事情。。。。就这些

我在没有GridView的其他活动中也使用了同样的方法,它可以完美地工作,只需使用上面显示的manifest代码


非常感谢您的帮助……

请尝试添加“屏幕大小”属性,就像我在下面所做的那样:

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

我认为问题在于适配器类。 请尝试使用以下代码:

内部活动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" 

希望它能帮助您:)

自行处理配置更改会使使用替代资源变得更加困难,因为系统不会自动为您应用这些资源。当您必须避免由于配置更改而重新启动时,此技术应被视为最后手段,并且不推荐用于大多数应用程序。是的!!请提出问题的可能解决方案,这也将有助于我们所有人的学习!!解决方案在主题“在方向更改期间保留对象配置”下提供的链接中。感谢Jitesh,它已经在使用。。。但我还是把它改成了那两个,相同的结果…拉古南丹,请检查你的链接,404错误,找不到文件。。。谢谢。使用片段可以满足您的需求,因为它可以更好地控制配置更改