Try this:
Create a model class for storing the color information of each list item. 
ListModel.java
public class ListModel implements Serializable
{
    String title;
    int color;
    public ListModel(String title, int color) {
        this.title = title;
        this.color = color;
    }
    public String getTitle() {
        return title;
    }
    public int getColor() {
        return color;
    }
    public void setTitle(String title) {
        this.title = title;
    }
    public void setColor(int color) {
        this.color = color;
    }
}
In activity, create initialize the ListView and assign an adapter to it. Here, when user presses the back button, we will convert the list of color information into JSON using GSON library and store it into SharedPreferences. And when activity is created, get the JSON from the SharedPreferences and again convert it back into List object using GSON. 
Activity.java
public class MainActivity extends AppCompatActivity {
    private MyListAdapter adapter;
    private List<ListModel> dataList;
    private SharedPreferences preferences;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        preferences = PreferenceManager.getDefaultSharedPreferences(this);
        if (preferences.contains("Key")) {
            String jsonStr = preferences.getString("Key", "");
            Type type = new TypeToken<List<ListModel>>() {
            }.getType();
            dataList = new Gson().fromJson(jsonStr, type);
        } else {
            dataList = new ArrayList<>();
            fillData();
        }
        ListView listView = (ListView) findViewById(R.id.listview);
        adapter = new MyListAdapter(this, dataList);
        listView.setAdapter(adapter);
    }
    public void changeColor(int position) {
        dataList.get(position).setColor(getResources().getColor(R.color.blue));
    }
    private void fillData() {
        int color = getResources().getColor(R.color.black);
        dataList.add(new ListModel("Button 1", color));
        dataList.add(new ListModel("Button 2", color));
        dataList.add(new ListModel("Button 3", color));
        dataList.add(new ListModel("Button 4", color));
        dataList.add(new ListModel("Button 5", color));
        dataList.add(new ListModel("Button 6", color));
        adapter.notifyDataSetChanged();
    }
    @Override
    public void onBackPressed() {
        super.onBackPressed();
        SharedPreferences.Editor editor = preferences.edit();
        //Set the values
        Gson gson = new Gson();
        String json = gson.toJson(dataList);
        editor.putString("Key", json);
        editor.apply();
    }
}
MyListAdapter.java
public class MyListAdapter extends BaseAdapter
{
    private final Context context;
    private final List<ListModel> list;
    public MyListAdapter(Context context, List<ListModel> list)
    {
        this.context = context;
        this.list = list;
    }
    @Override
    public int getCount() {
        return list.size();
    }
    @Override
    public Object getItem(int i) {
        return null;
    }
    @Override
    public long getItemId(int i) {
        return 0;
    }
    /*private view holder class*/
    private class ViewHolder {
        Button button;
    }
    public View getView(final int position, View convertView, ViewGroup parent) {
        ViewHolder holder = null;
        LayoutInflater mInflater = (LayoutInflater)
                context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
        if (convertView == null) {
            convertView = mInflater.inflate(R.layout.list_item, null);
            holder = new ViewHolder();
            holder.button = (Button) convertView.findViewById(R.id.listItemBtn);
            convertView.setTag(holder);
        }
        else {
            holder = (ViewHolder) convertView.getTag();
        }
        ListModel model = list.get(position);
        holder.button.setText(model.getTitle());
        holder.button.setBackgroundColor(model.getColor());
        holder.button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                view.setBackgroundColor(context.getResources().getColor(R.color.blue));
                ((MainActivity)context).changeColor(position);
            }
        });
        return convertView;
    }
}
And in build.gradle, add GSON dependency
compile 'com.google.code.gson:gson:2.2.4'