Buggy code:
public class MainActivity extends ActionBarActivity { public static String EXTRA_HOKKIEN = "sg.dhs.pic_che.HOKKIEN" ; public static String EXTRA_CANTONESE = "sg.dhs.pic_che.CANTONESE" ; public static String EXTRA_CHINESE = "sg.dhs.pic_che.CHINESE" ; public static String EXTRA_ENGLISH = "sg.dhs.pic_che.ENGLISH" ; public static String EXTRA_ID = "sg.dhs.pic_che.ID" ; @ Override protected void onCreate ( Bundle savedInstanceState ) { } @ Override public boolean onCreateOptionsMenu ( Menu menu ) { } @ Override public boolean onOptionsItemSelected ( MenuItem item ) { } public static class PlaceholderFragment extends Fragment { List < String > P_ID = new ArrayList < String > ( ) ; List < String > HOK = new ArrayList < String > ( ) ; List < String > CAN = new ArrayList < String > ( ) ; List < String > CHI = new ArrayList < String > ( ) ; List < String > ENG = new ArrayList < String > ( ) ; List < Phrase > PHRASES = new ArrayList < Phrase > ( ) ; PhraseDataSource datasource ; public PlaceholderFragment ( ) { } @ Override public View onCreateView ( LayoutInflater inflater , ViewGroup container , Bundle savedInstanceState ) { } private class ServerPhrases extends AsyncTask < String , Void , String > { String LOGTAG = "ServerPhrases" ; @ Override protected void onPreExecute ( ) { } @ Override protected String doInBackground ( String ... urls ) { } @ Override protected void onPostExecute ( String result ) { } } private class ServerCategories extends AsyncTask < String , Void , String > { @ Override protected String doInBackground ( String ... urls ) { } } class PhraseAdapter extends ArrayAdapter < String > { Context context ; String [ ] hokkienArray ; String [ ] cantoneseArray ; String [ ] chineseArray ; String [ ] englishArray ; PhraseAdapter ( Context c , String [ ] hokkien , String [ ] cantonese , String [ ] chinese , String [ ] english ) { } @ Override public View getView ( int position , View convertView , ViewGroup parent ) { View row = convertView ; MainActivity . PlaceholderFragment . PhraseAdapter . RowHolder holder = null ; if ( row == null ) { LayoutInflater inflater = ( ( LayoutInflater ) ( context . getSystemService ( LAYOUT_INFLATER_SERVICE ) ) ) ; row = inflater . inflate ( list_row , parent , false ) ; holder = new MainActivity . PlaceholderFragment . PhraseAdapter . RowHolder ( row ) ; row . setTag ( holder ) ; } else { holder = ( ( MainActivity . PlaceholderFragment . PhraseAdapter . RowHolder ) ( row . getTag ( ) ) ) ; } String fileName = ( position + 1 ) + ".png" ; <START_BUG> File dir = new File ( ( ( ( Environment . getExternalStorageDirectory ( ) . getAbsolutePath ( ) ) + "//PICCHE//img//" ) + fileName ) ) ; <END_BUG> Bitmap bmp = BitmapFactory . decodeFile ( dir . getAbsolutePath ( ) ) ; holder . img . setImageBitmap ( bmp ) ; holder . hokkien . setText ( hokkienArray [ position ] ) ; holder . cantonese . setText ( cantoneseArray [ position ] ) ; holder . chinese . setText ( chineseArray [ position ] ) ; holder . english . setText ( englishArray [ position ] ) ; return row ; } class RowHolder { ImageView img ; TextView hokkien ; TextView cantonese ; TextView chinese ; TextView english ; RowHolder ( View v ) { } } } private void readDB ( View v ) { } private boolean isNetworkConnected ( ) { } @ Override public void onPause ( ) { } @ Override public void onResume ( ) { } } }

Fix:
File dir = new File ( ( ( ( Environment . getExternalStorageDirectory ( ) . getAbsolutePath ( ) ) + "//PICCHE//PIC-CHE_Images//" ) + fileName ) ) ;