SearchActivity to search through an ArrayList
Once is enough of bundle.getParcelableArrayList("chords")

I'm not sure if bundle.getParcelableArrayList creates a new list every time it's called. If it doesn't, then repeated calls won't double the memory used so it won't really be a problem.
But in any case, you don't need to call it twice like this:


chords = bundle.getParcelableArrayList("chords");
filteredList = bundle.getParcelableArrayList("chords");



You can make filteredList reference chords:

filteredList = chords = bundle.getParcelableArrayList("chords");


Use interfaces in declarations

These fields would be better declared as List instead of ArrayList:


ArrayList&lt;Accordo&gt; chords;
ArrayList&lt;Accordo&gt; filteredList;



Just like you used List instead of ArrayList in the filter method.

Also, probably all fields of the activity should be private.

Reduce memory churn

Every time the query text changes,
you recreate a new list,
and re-link the adapter to the new list.
It might be more efficient to reuse the same list,
by clearing and re-adding elements instead of creating a new list.
However,
there is just one tricky point,
of the initial state when there is no filter yet.
The adapter could initially be linked to chords,
and then the first time a query text is entered,
re-link it to filteredList, for example:

@Override
public boolean onQueryTextChange(String newText) {
    if (filteredList == null) {
        // first time used
        filteredList = new ArrayList&lt;&gt;();
        adapter.setFilter(filteredList);
    }
    filter(newText);
    return true;
}

private void filter(String query) {
    query = query.toLowerCase();

    filteredList.clear();
    for (Accordo model : chords) {
        final String text = model.getName().toLowerCase();
        if (text.contains(query)) {
            filteredList.add(model);
        }
    }
}


Notice some other related changes:


I dropped the list parameter of filter: the filtering is always based on chords, which is a field, so the method has direct access to it, no need to pass as parameter
Made filter return void, as now it modifies filteredList in-place