"unusable" as in being extremely laggy and almost can't get to all of the items because of how slow it is. I am really at a loss to what I am doing wrong with my implementation of the navigation drawer. I am using AppCompat v7's material theme, and using the viewholder pattern. The drawer consists of only images which are 600x232 and around 35kb each in size (stored locally in the app).

Here's a sample from my MainActivity

@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); . . . mColorIcons = getResources().getStringArray(R.array.color_icons); mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); mDrawerList = (ListView) findViewById(R.id.left_drawer); adapter = new MyPerformanceArrayAdapter(this, mColorIcons); // set a custom shadow that overlays the main content when the drawer opens mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START); mDrawerList.setAdapter(adapter); mDrawerList.setOnItemClickListener(new DrawerItemClickListener()); mDrawerList.setCacheColorHint(Color.TRANSPARENT); // not sure if this is required for you. mDrawerList.setFastScrollEnabled(true); mDrawerList.setScrollingCacheEnabled(false); . . .

And here is what MyPerformanceArrayAdaptor looks like

public class MyPerformanceArrayAdapter extends ArrayAdapter<String>{ private final Activity context; private final String[] names; static class ViewHolder { public ImageView image; } public MyPerformanceArrayAdapter(Activity context, String[] names) { super(context, R.layout.drawer_list_item, names); this.context = context; this.names = names; } @Override public View getView(int position, View convertView, ViewGroup parent) { View rowView = convertView; // reuse views if (rowView == null) { LayoutInflater inflater = context.getLayoutInflater(); rowView = inflater.inflate(R.layout.drawer_list_item, null); // configure view holder ViewHolder viewHolder = new ViewHolder(); viewHolder.image = (ImageView) rowView .findViewById(R.id.image); rowView.setTag(viewHolder); } // fill data ViewHolder holder = (ViewHolder) rowView.getTag(); String s = names[position]; holder.image.setImageResource(context.getResources().getIdentifier(s, "drawable", context.getPackageName())); return rowView; } }

I would appreciate any input on how to improve this. I am having no issues when testing on a 2013 Moto X (4.4.4), Nexus 5 (L), and Nexus 7 (L)(2013). I cannot think of what the issue could be that specifically pertains to the LG G3. There have been a few reports of it not performing well on the HTC M8 as well.

EDIT: Here is my drawer_list_item xml code