ग्रिडव्यू के स्क्रॉलिंग प्रदर्शन में सुधार - एंड्रॉइड, प्रदर्शन, ग्रिडव्यू, एंड्रॉइड-ग्रिडव्यू, एंड्रॉइड-गैलरी

मैं एक ग्रिड व्यू का उपयोग कर रहा हूं जो संपत्ति फ़ोल्डर से लोड की गई छवियों को प्रदर्शित करता है।

ग्रिडव्यू संपत्तियों से 50 से अधिक छवियों को प्रदर्शित करता है, लेकिन उस ग्रिडव्यू का प्रदर्शन बहुत खराब है और इसमें समय-समय पर स्क्रॉलिंग है।

नमूना कोड है:

protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.ameme);

GridView myGallery = (GridView) findViewById(R.id.gridView1);

mBitArray = new Bitmap[5];

//This is just a sample code

try
{
//these images are stored in the root of "assets"
mBitArray[0] = getBitmapFromAsset("AM0.jpg");
mBitArray[1] = getBitmapFromAsset("AM1.jpg");
mBitArray[2] = getBitmapFromAsset("AM2.jpg");
mBitArray[3] = getBitmapFromAsset("AM3.jpg");
mBitArray[4] = getBitmapFromAsset("AM4.jpg");
}
catch (IOException e)
{
e.printStackTrace();
}

myGallery.setAdapter(new GalleryAdapter(this, mBitArray));
}
public class GalleryAdapter extends BaseAdapter
{
private Context mContext;
private Bitmap[] mImageArray;

public GalleryAdapter(Context context, Bitmap[] imgArray)
{
mContext = context;
mImageArray = imgArray;
}

public int getCount()
{
return mImageArray.length;
}

public Object getItem(int position)
{
return position;
}

public long getItemId(int position)
{
return position;
}
public View getView(int position, View convertView, ViewGroup parent)
{
final ImageView imgView = new ImageView(mContext);


imgView.setImageBitmap(mImageArray[position]);

final RelativeLayout borderImg = new RelativeLayout(mContext);

borderImg.setPadding(8, 8, 8, 8);
borderImg.setGravity(Gravity.CENTER | Gravity.BOTTOM);
borderImg.setBackgroundColor(Color.rgb(7,35,63));

borderImg.addView(imgView);
imgView.setLayoutParams(new RelativeLayout.LayoutParams(100,100));

return borderImg;
}

}
private Bitmap getBitmapFromAsset(String strName) throws IOException
{
AssetManager assetManager = getAssets();

InputStream istr = assetManager.open(strName);

Bitmap bitmap = BitmapFactory.decodeStream(istr);
istr.close();

return bitmap;
}
}

मैं स्क्रॉलिंग कैसे कर सकता हूं gridView() चिकनी?

उत्तर:

जवाब के लिए 0 № 1

ConvertView पुनर्नवीनीकरण दृश्य रखती है। आपको जांचना चाहिए कि क्या यह शून्य है। यदि यह शून्य नहीं है तो पिछली पंक्ति को दोबारा उपयोग किया जा सकता है। उम्मीद है कि कोड का यह टुकड़ा थोड़ा सुधारता है। एक पैटर्न भी कहा जाता है ViewHolder पैटर्न जो उपयोगी होगा, लेकिन आपके मामले के लिए नहीं।

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

if(convertView == null){

final ImageView imgView = new ImageView(mContext);
final RelativeLayout borderImg = new RelativeLayout(mContext);

imgView.setLayoutParams(new RelativeLayout.LayoutParams(100,100));
borderImg.setPadding(8, 8, 8, 8);
borderImg.setGravity(Gravity.CENTER | Gravity.BOTTOM);
borderImg.setBackgroundColor(Color.rgb(7,35,63));

borderImg.addView(imgView);

convertView.setTag(borderImg);

}else{
borderImg = (RelativeLayout)convertView.getTag();
}

imgView.setImageBitmap(mImageArray[position]);

return borderImg;
}

मुझे लगता है कि बिटमैप्स बड़ा हो सकता है, इसे पढ़ने का प्रयास करें http://developer.android.com/training/displaying-bitmaps/load-bitmap.html और उन्हें अनुकूलित करें।


संबंधित सवाल
सबसे लोकप्रिय