gpt4 book ai didi

Android 慢 GridView

转载 作者:行者123 更新时间:2023-11-29 17:46:28 28 4
gpt4 key购买 nike

我是 Android 开发新手,遇到了性能问题。当我的 GridView 有太多项目时,它会变得有点慢。有什么方法可以让它运行得更快一些吗?

这是我使用的代码:

适配器:

public class CharactersAdapter extends BaseAdapter {
private Context mContext;
private int screenSize;
private int columns;
// Constructor

public CharactersAdapter(Context c,int screenSize) {
this.screenSize=screenSize;
mContext = c;
}

public CharactersAdapter(Context c) {
mContext = c;
}

@Override
public int getCount() {
return charPics.length;
}

@Override
public Object getItem(int i) {

return charPics[i];
}

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

@Override
public View getView(int i, View convertView, ViewGroup viewGroup) {
ImageView imageView;
this.columns=mContext.getResources().getInteger(R.integer.grid_columns);
if (convertView == null) {

imageView = new ImageView(mContext);
imageView.setLayoutParams(new GridView.LayoutParams(screenSize /this.columns,screenSize /this.columns));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
}else{
imageView = (ImageView) convertView;
}
imageView.setImageDrawable(mContext.getResources().getDrawable(charPics[i]));
return imageView;
}}

fragment

public class CharacterFragment extends Fragment {

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
DisplayMetrics displaymetrics = new DisplayMetrics();
getActivity().getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
int screenWidth = displaymetrics.widthPixels;


View rootView = inflater.inflate(R.layout.fragment_character, container, false);
GridView gridview = (GridView)rootView.findViewById(R.id.gridview);
gridview.setAdapter(new CharactersAdapter(getActivity(),screenWidth));

gridview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v,
int position, long id) {

Intent i = new Intent(getActivity().getApplicationContext(), CharacterActivity.class);
// Pass image index
i.putExtra("pos", position);
startActivity(i);
}
});

return rootView;
}

我做错了什么吗?......

最佳答案

我真的建议您在那里使用 Holder 模式,在其中保存您创建的 View 以供重用并节省内存,这将提供更高的性能,here是一个很好的教程。同样对于图像加载,您可以使用 Universal Image Loader,这将使图像加载 UIL异步,这样您的 UI 线程就不会变慢。祝你好运

关于Android 慢 GridView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26244499/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com