I wanted to add swipe to refresh for my listview in a Fragment but it doesn't seem to work as it doesn't update my list view at all. Here is how my activity works:
- Users open up 
PictureFragmentwhere a list of images (listview) are shown. - Users press "add button" which will open up 
UploadImageActivityto add in image. - Once done, 
UploadImageActivitywill close and users now get back toPictureFragment(not updated their latest image upload yet). - User swipes down to update, << Doesn't update the latest image into listview!
 
Hope a kind soul can help me resolve this.
public class PictureFragment extends Fragment {
private ListView listView;
private int smiley_id;
private String title, date, caption, image;
private ImageButton addPicButton;
private SwipeRefreshLayout swipeRefreshLayout;
private PictureAdapter adapter;
private TableDatabase tableDatabase;
private Cursor cursor;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.fragment_picture, container, false);
    // Set listview
    listView = (ListView) rootView.findViewById(R.id.piclistView);
    adapter = new PictureAdapter(getActivity().getApplicationContext(), R.layout.row_feed);
    listView.setAdapter(adapter);
    // Retrieve data from database
    tableDatabase = new TableDatabase(getActivity());
    // Get rows of database
    cursor = tableDatabase.getInformation(tableDatabase);
    // Start from the last so that listview displays latest image first
    // Check for existing rows
    if(cursor.moveToLast()) {
        do {
            // Get items from each column
            smiley_id = cursor.getInt(0);
            title = cursor.getString(1);
            date = cursor.getString(2);
            caption = cursor.getString(3);
            image = cursor.getString(4);
            // Saves images added by user into listview
            PictureItem pictureItem = new PictureItem(smiley_id, title, date, caption, image);
            adapter.add(pictureItem);
        } while (cursor.moveToPrevious());
    }
    // Swipe on refresh
    swipeRefreshLayout = (SwipeRefreshLayout) rootView.findViewById(R.id.swipe_refresh);
    swipeRefreshLayout.setEnabled(false);
    swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
        @Override
        public void onRefresh() {
            swipeRefreshLayout.setRefreshing(true);
            (new Handler()).postDelayed(new Runnable() {
                @Override
                public void run() {
                    adapter.notifyDataSetChanged();
                    swipeRefreshLayout.setRefreshing(false);
                }
            }, 1000);
        }
    });
    listView.setOnScrollListener(new AbsListView.OnScrollListener() {
        @Override
        public void onScrollStateChanged(AbsListView view, int scrollState) {
        }
        @Override
        public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
            if(firstVisibleItem == 0) swipeRefreshLayout.setEnabled(true);
            else swipeRefreshLayout.setEnabled(false);
        }
    });
    // Lead user to UploadImageActivity to insert image to listview
    addPicButton = (ImageButton) rootView.findViewById(R.id.addPictureButton);
    addPicButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            startActivity(new Intent(getActivity().getApplicationContext(), UploadImageActivity.class));
        }
    });
    return rootView;
}
UploadImageActivity.java
public class UploadImageActivity extends ActionBarActivity implements View.OnClickListener{
private Calendar cal = Calendar.getInstance();
private SimpleDateFormat dateFormatter = new SimpleDateFormat("dd MMM yyyy, EEE @ hh:mm a");
EditText pic_title, pic_caption;
ImageView picture;
Button smiley1, smiley2, smiley3, smiley4, smiley5, selected_smiley;
// To store in database
int smiley_id = R.drawable.smile1; // Set default smiley as first smiley if not chosen
String title, date, caption;
String uriPicture;    // Save uri in string format to store image as text format in database
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_picture);
    // Removes shadow under action bar
    getSupportActionBar().setElevation(0);
    pic_title = (EditText) findViewById(R.id.picture_title);
    pic_caption = (EditText) findViewById(R.id.picture_caption);
    picture = (ImageView) findViewById(R.id.imagebutton);
    smiley1 = (Button) findViewById(R.id.button1);
    smiley2 = (Button) findViewById(R.id.button2);
    smiley3 = (Button) findViewById(R.id.button3);
    smiley4 = (Button) findViewById(R.id.button4);
    smiley5 = (Button) findViewById(R.id.button5);
    selected_smiley = (Button) findViewById(R.id.select_smiley);
    picture.setOnClickListener(this);
    smiley1.setOnClickListener(this);
    smiley2.setOnClickListener(this);
    smiley3.setOnClickListener(this);
    smiley4.setOnClickListener(this);
    smiley5.setOnClickListener(this);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.menu_event, menu);
    return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    int id = item.getItemId();
    if (id == R.id.action_ok) {
        title = pic_title.getText().toString();
        date = dateFormatter.format(cal.getTime());
        caption = pic_caption.getText().toString();
        // Do not save data
        if(title.isEmpty()) {
            alertUser("Upload failed!", "Please enter title.");
        }
        else if(caption.isEmpty()) {
            alertUser("Upload failed!", "Please enter caption.");
        }
        else if(uriPicture.isEmpty()) {
            alertUser("Upload failed!", "Please upload an image.");
        }
        // Save data when title, caption and image are not empty
        else {
            // Add information into database
            TableDatabase tableDatabase = new TableDatabase(this);
            tableDatabase.putInformation(tableDatabase, smiley_id, title, date, caption, uriPicture);
            Toast.makeText(getBaseContext(), "Details successfully saved", Toast.LENGTH_LONG).show();
            finish();
        }
        return true;
    }
    return super.onOptionsItemSelected(item);
}
@Override
public void onClick(View v) {
    switch(v.getId()) {
        // Show the image picked by user
        case R.id.imagebutton:
            picture.setImageDrawable(null);
            Crop.pickImage(this);
            break;
        // Saves the user's smiley choice
        case R.id.button1:
            selected_smiley.setBackgroundResource(R.drawable.smile1);
            selected_smiley.setText("");
            setSmileyID(R.drawable.smile1);
            break;
        case R.id.button2:
            selected_smiley.setBackgroundResource(R.drawable.smile2);
            selected_smiley.setText("");
            setSmileyID(R.drawable.smile2);
            break;
        case R.id.button3:
            selected_smiley.setBackgroundResource(R.drawable.smile3);
            selected_smiley.setText("");
            setSmileyID(R.drawable.smile3);
            break;
        case R.id.button4:
            selected_smiley.setBackgroundResource(R.drawable.smile4);
            selected_smiley.setText("");
            setSmileyID(R.drawable.smile4);
            break;
        case R.id.button5:
            selected_smiley.setBackgroundResource(R.drawable.smile5);
            selected_smiley.setText("");
            setSmileyID(R.drawable.smile5);
            break;
        default:
            break;
    }
}
// This method sets the smiley ID according to what the user picks.
private void setSmileyID(int smileyID) {
    this.smiley_id = smileyID;
}
// This method calls alert dialog to inform users a message.
private void alertUser(String title, String message) {
    AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(UploadImageActivity.this);
    dialogBuilder.setTitle(title);
    dialogBuilder.setMessage(message);
    dialogBuilder.setPositiveButton("Ok", null);
    dialogBuilder.show();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if(requestCode == Crop.REQUEST_PICK && resultCode == RESULT_OK) {
        beginCrop(data.getData());
    } else if(requestCode == Crop.REQUEST_CROP) {
        handleCrop(resultCode, data);
    }
}
// This method allows users to crop image in square.
private void beginCrop(Uri source) {
    Uri destination = Uri.fromFile(new File(getCacheDir(), "cropped"));
    Crop.of(source, destination).asSquare().start(this);
}
// This method ensures there are no errors in cropping.
private void handleCrop(int resultCode, Intent result) {
    if(resultCode == RESULT_OK) {
        picture.setImageURI(Crop.getOutput(result));
        uriPicture = Crop.getOutput(result).toString();
    } else if(resultCode == Crop.RESULT_ERROR) {
        Toast.makeText(this, Crop.getError(result).getMessage(), Toast.LENGTH_SHORT).show();
    }
}
TableDatabase.java
public class TableDatabase extends SQLiteOpenHelper {
public String query = "CREATE TABLE " + TableData.TableInfo.TABLE_NAME + " (" +
                                        TableData.TableInfo.SMILEY + " INTEGER NOT NULL, " +
                                        TableData.TableInfo.TITLE + " TEXT, " +
                                        TableData.TableInfo.DATE + " TEXT, " +
                                        TableData.TableInfo.CAPTION + " TEXT, " +
                                        TableData.TableInfo.IMAGE + " TEXT);";
public TableDatabase(Context context) {
    super(context, TableData.TableInfo.DATABASE_NAME, null, TableData.TableInfo.DATABASE_VERSION);
    // Check if database is created
    Log.d("Database operations", "Database created");
}
@Override
public void onCreate(SQLiteDatabase db) {
    // Create table
    db.execSQL(query);
    Log.d("Database operations", "Table created");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
// Insert user information into the database
public void putInformation(TableDatabase data, int smiley, String title, String date, String caption, String image) {
    // Write data into database
    SQLiteDatabase sqLiteDatabase = data.getWritableDatabase();
    ContentValues contentValues = new ContentValues();
    // Add value from each column into contentvalue
    contentValues.put(TableData.TableInfo.SMILEY, smiley);
    contentValues.put(TableData.TableInfo.TITLE, title);
    contentValues.put(TableData.TableInfo.DATE, date);
    contentValues.put(TableData.TableInfo.CAPTION, caption);
    contentValues.put(TableData.TableInfo.IMAGE, image);
    // Insert into sqlite database
    sqLiteDatabase.insert(TableData.TableInfo.TABLE_NAME, null, contentValues);
    Log.d("Database operations", "One row inserted");
}
// Retrieve data from database
public Cursor getInformation(TableDatabase data) {
    // Read data from sqlite database
    SQLiteDatabase sqLiteDatabase = data.getReadableDatabase();
    String[] columns = { TableData.TableInfo.SMILEY, TableData.TableInfo.TITLE, TableData.TableInfo.DATE, TableData.TableInfo.CAPTION, TableData.TableInfo.IMAGE };
    // Points to first row of table
    return sqLiteDatabase.query(TableData.TableInfo.TABLE_NAME, columns, null, null, null, null, null);
}